我对Objective-C的内存管理感到困惑。 例如:
.h file
@property(nonatomic,retain) NSString *myString;
.m file
@synthesize myString
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [arrayString count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//in this case,i have to check
if(self.myString != nil)
[myString release],self.myString = nil;
//and assign
self.myString = [arrayString objectAtIndex:indexPath.row];
//or i need only assign
self.myString = [arrayString objectAtIndex:indexPath.row];
}
任何人都可以向我解释一下吗? 非常感谢。
答案 0 :(得分:2)
您只需要在nil
和dealloc
方法中分配字符串..并将其分配给viewDidUnload
。
答案 1 :(得分:0)
if(self.myString != nil){
[myString release],self.myString = nil;
}
这就够了:
if(self.myString != nil){
self.myString = nil;
}
至于你的问题,你只需要这个:
self.myString = [arrayString objectAtIndex:indexPath.row];
答案 2 :(得分:0)
您不需要发布,因为该属性被定义为“retain”,这意味着它在释放前一个对象后会保留该对象。
如果您不是直接使用变量访问该属性,那么您需要手动管理发布/保留..
BTW:您可以向nil对象发送消息...(所以不检查它是否为零释放它)