0

A 有一个NSView对象,当我在菜单栏中按下打开子菜单后,它会收到一条消息。它从文本文件加载交换数据,并应将其呈现为CustomView. 所以

-(IBAction)loadExchangeData:(id)sender 

加载数据,并存储在 aNSMutableArray*中,之后它应该由 drawRect 呈现。

但!函数中之前加载的drawRect数据消失,NSMutableArray*会再次变为0X0。

以及部分代码:

。H:

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

米:

#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 的设置位于一个对象中,而 drarect 则引用了不同的对象。

调试代码以了解保存 NSMutableArray 的对象地址,这可以帮助您缩小问题范围。

如需进一步帮助,请添加部分代码以了解更多信息。

根据代码和注释更新

您可能在 nib 中有一个对象,在代码中创建一个对象,在这种情况下,请避免在代码中创建对象,并使用 outlet(IBOutlet) 在代码中引用在 nib 中创建的对象。

于 2009-12-27T17:15:32.860 回答