为什么objective-c对象在收到消息后没有刷新我?

时间:2009-12-27 16:44:10

标签: objective-c refresh message

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

1 个答案:

答案 0 :(得分:0)

根据你的解释,它看起来像你引用不同的对象,你的设置为NSMutableArray,它在一个对象中,而drarect指的是另一个对象。

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

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

根据代码和评论进行更新

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