我必须在这里发布对象吗?

时间:2012-07-05 15:01:36

标签: iphone ios memory

我对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];
}

任何人都可以向我解释一下吗? 非常感谢。

3 个答案:

答案 0 :(得分:2)

您只需要在nildealloc方法中分配字符串..并将其分配给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对象发送消息...(所以不检查它是否为零释放它)