Iphone 我必须在这里释放物体吗?
我混淆了Objective-C的内存管理。 例如: 谁能给我解释一下吗?Iphone 我必须在这里释放物体吗?,iphone,ios,memory,Iphone,Ios,Memory,我混淆了Objective-C的内存管理。 例如: 谁能给我解释一下吗? 非常感谢。您只需分配字符串即可。。并在dealloc和viewDidUnload方法中将其释放/分配给nil if(self.myString != nil){ [myString release],self.myString = nil; } 这就足够了: if(self.myString != nil){ self.myString = nil; } 至于你
非常感谢。您只需分配字符串即可。。并在
dealloc
和viewDidUnload
方法中将其释放/分配给nil
if(self.myString != nil){
[myString release],self.myString = nil;
}
这就足够了:
if(self.myString != nil){
self.myString = nil;
}
至于你的问题,你只需要这个:
self.myString = [arrayString objectAtIndex:indexPath.row];
您不需要释放,因为属性被定义为“retain”,这意味着它在释放前一个对象后保留传递的对象 如果直接使用变量而不是访问属性,则需要手动管理释放/保留
顺便说一句:您可以向nil对象发送一条消息…(因此,不必检查它是否为nil就可以释放它)您甚至不必调用release。由于它是一个带有
retain
限定符的属性,因此只需将该属性分配给nil:self.myString=nil代码>为什么?我有一个带有retain的属性,我从未将它分配给其他属性,但当我在dealloc调用[myProperty release]或在未崩溃的情况下调用didUnload时。在这里,retainCount为0,但我可以释放它。我不知道为什么会这样代码>就足够了
self.myString = [arrayString objectAtIndex:indexPath.row];