Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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/1/ms-access/4.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
dealloc或发布objective-c中的最佳实践?_Objective C_Pointers - Fatal编程技术网

dealloc或发布objective-c中的最佳实践?

dealloc或发布objective-c中的最佳实践?,objective-c,pointers,Objective C,Pointers,我只是简单地释放如下对象: [myObj release]; 我看到其他人补充说: [myObj release]; myObj = nil; 后者是否更有利,因为现在不再有对该指针的引用?这只是为了确保可能发送到myObj的其他后续消息不会引发异常。在Objective-C中可以将消息发送到nil 否则,myObj仍然指向它所在的内存地址,访问它可能会导致错误访问。只是为了确保可能发送到myObj的其他连续消息不会引发异常。在Objective-C中可以将消息发送到nil 否则,myObj

我只是简单地释放如下对象:

[myObj release];
我看到其他人补充说:

[myObj release]; myObj = nil;

后者是否更有利,因为现在不再有对该指针的引用?

这只是为了确保可能发送到
myObj
的其他后续消息不会引发异常。在Objective-C中可以将消息发送到
nil


否则,
myObj
仍然指向它所在的内存地址,访问它可能会导致
错误访问。

只是为了确保可能发送到
myObj
的其他连续消息不会引发异常。在Objective-C中可以将消息发送到
nil


否则,
myObj
仍然指向它所在的内存地址,访问它可能会导致
访问错误。

根据我的说法,这完全取决于myObject的范围

  • 如果myObject范围以release语句结束,那么将其设置为nil没有任何好处

  • 如果myObject作用域没有以release语句结束,那么将对象设置为nil可以使对象访问安全。很有可能myObject内存被释放,您尝试访问此内存位置,这将导致异常


  • 我认为这完全取决于myObject的范围

  • 如果myObject范围以release语句结束,那么将其设置为nil没有任何好处

  • 如果myObject作用域没有以release语句结束,那么将对象设置为nil可以使对象访问安全。很有可能myObject内存被释放,您尝试访问此内存位置,这将导致异常


  • 调试时,您还可以使用NSZombie功能检测是否向解除分配的对象发送消息。调试时,您还可以使用NSZombie功能检测是否向解除分配的对象发送消息。