所以我遇到了OOAD,属性,self关键字等问题。我想创建一个具有UITableView的简单测试项目。
我有一个ivarNSArray *tableData;
我如何为此编写setter和getter方法?我以为我的二传手看起来像是:
- (void)setTableData:(NSArray *)array {
[tableData autorelease];
tableData = [array retain];
}
然后当我尝试在viewDidLoad中使用此方法时,我意识到我需要创建一个ViewController的实例。当我看到它们在为NSArray创建属性的书籍中如何完成时,这似乎是不该做的,然后在viewDidLoad中做一个
NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", nil];
self.tableData = array;
[array release];
我只是想了解幕后发生的事情,尝试理解OOAD原则,ivars,属性,自我等等。先谢谢。
答案 0 :(得分:1)
我相信你已经知道使用@synthesize
会为你创建setter / getter方法,但是要了解这些概念,我们知道发生了什么事情。
就一个setter方法来说,你可能会更喜欢这样的东西:
- (void)setTableData:(NSArray *)array {
if (tableData != array) {
[tableData release];
tableData = [array retain];
}
}
这基本上会检查以确保新阵列实际上与当前不同。如果是,则释放旧实例并设置新实例。
对于getter方法,只需使用:
- (NSArray *)tableData (
return tableData;
}
可以通过拨打self.tableData
来访问。当然,使用self.tableData = array
;
我希望有所帮助。如果您需要更多信息,请说明,我将很乐意尝试进一步解释