A有一个NSView
对象,在我将Menü栏推入Open子菜单后,它会收到一条消息。它从文本文件加载交换数据,它应该在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
答案 0 :(得分:0)
根据你的解释,它看起来像你引用不同的对象,你的设置为NSMutableArray,它在一个对象中,而drarect指的是另一个对象。
调试代码以了解保存NSMutableArray的对象地址,这可以帮助您缩小问题范围。
如需进一步的帮助,请添加部分代码以了解更多信息。
根据代码和评论进行更新
您可能在nib中有一个对象,在代码中创建一个对象,在这种情况下,避免在代码中创建对象,并使用outlet(IBOutlet)在代码中引用nib中创建的对象。