当发布一个可能存在或不存在的实例时,我通常会这样写:
if(object!= nil)[object release];
但是因为向nil发送消息不是问题,那有条件的必要吗?
我想问题归结为:使用更多开销,将对象与nil进行比较,或者发送nil消息?
看到这个页面解释了将消息传递给nil(概括你的例子)是完全没问题的.
至于什么有更多的开销,任何性能影响将对系统的整体性能可忽略不计(不要养成过早优化的习惯).
当我编写比Obj-C更多的C++代码时,我总是会编写代码来检查nil
- 因为这是一个自己的注释,允许这个指针nil
.现在,我让它objc_msgSend
处理它,因为我已经变得更加舒服地阅读代码,假设任何指针都可以有效nil
.
在"安全编码"级别上,我认为nil
在每次发布后始终设置指针更为重要(可能release
在dealloc
方法中排除了一个).这样,您可以确保指针永远无效(它有效,或者nil
).