【发布时间】:2009-08-18 18:35:48
【问题描述】:
今天早上,我正在开发一个 iPhone 应用程序时遇到了崩溃,虽然我修复了这个错误,但我很好奇这是一个问题的语法原因。
这是我简化为简单元素的代码。我正在使用 NSArray 为项目填充 TableView 中的项目。 NSArray 是一个属性:
@interface FooViewController : UITableViewController {
NSArray *stuff;
}
@property (nonatomic, retain) NSArray *stuff;
在我的实现文件中:
@synthesize stuff;
- (void)viewDidLoad {
NSArray *arr = [[NSArray alloc] initWithObjects:@"", @"Item 1", @"Item 2",
@"Lorem", @"Ipsum", nil];
self.stuff = arr;
[arr release];
}
现在,当我第一次编写方法时,我不小心遗漏了“自我”。这导致了炸弹。尽管在测试时,它一开始就起作用了。我试过了:
stuff = arr;
NSLog(@"%d", [stuff count]);
但是在其他方法中使用 stuff 就被轰炸了。现在我已经解决了这个问题,我可以在其他地方使用 [stuff count]。
那么为什么我可以在某些地方使用 stuff 而在其他地方我必须使用 self.stuff?
【问题讨论】:
标签: objective-c iphone-sdk-3.0