Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 我必须在这里释放物体吗?_Iphone_Ios_Memory - Fatal编程技术网

Iphone 我必须在这里释放物体吗?

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; } 至于你

我混淆了Objective-C的内存管理。 例如:

谁能给我解释一下吗?
非常感谢。

您只需分配字符串即可。。并在
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];