0

オブジェクトがNSViewあり、MenüバーのOpensubmenüを押した後にメッセージが表示されます。テキストファイルから交換データをロードし、でレンダリングする必要がありますCustomView。だから

-(IBAction)loadExchangeData:(id)sender 

データをロードし、に保存しNSMutableArray*ます。その後、drawRectでレンダリングする必要があります。

だが!drawRect以前にロードされたデータが消える関数では、再びNSMutableArray*0X0になります。

そしてコードの一部:

.h:

 #import <Cocoa/Cocoa.h>
 @interface Chart : NSView 
 {
     NSMutableArray * exchange;
 }
 - (IBAction)loadExchangeData:(id)sender;
 @end

.m:

#import "Chart.h"
@implementation Chart
- (IBAction)loadExchangeData:(id)sender {
     ...
     exchange = [NSMutableArray array];
     [exchange addObject:...];
     ...
     return self;
}

- (void)drawRect:(NSRect)dirtyRect 
{
    ...
    id sth = [exchange objectAtIndex:i];
    ...
}
@end
4

1 に答える 1

0

あなたの説明では、別のオブジェクトを参照しているように見えます.NSMutableArrayへの設定は1つのオブジェクトにあり、drarectは別のオブジェクトを参照しています。

コードをデバッグして、NSMutableArray を保持するオブジェクト アドレスを確認します。これにより、問題を絞り込むことができます。

さらに支援が必要な場合は、コードの一部を追加して詳細を確認してください。

コードとコメントに基づいて更新する

nib にオブジェクトがあり、コードで作成されたオブジェクトがある場合、コードでのオブジェクトの作成を避け、outlet(IBOutlet) を使用してコードで nib で作成されたオブジェクトを参照します。

于 2009-12-27T17:15:32.860 に答える