在发送发布消息之前检查是否为零?

Ste*_*ion 9 objective-c

当发布一个可能存在或不存在的实例时,我通常会这样写:

if(object!= nil)[object release];

但是因为向nil发送消息不是问题,那有条件的必要吗?

我想问题归结为:使用更多开销,将对象与nil进行比较,或者发送nil消息?

she*_*hek 15

看到这个页面解释了将消息传递给nil(概括你的例子)是完全没问题的.

至于什么有更多的开销,任何性能影响将对系统的整体性能可忽略不计(不要养成过早优化的习惯).


Mat*_*her 5

当我编写比Obj-C更多的C++代码时,我总是会编写代码来检查nil- 因为这是一个自己的注释,允许这个指针nil.现在,我让它objc_msgSend处理它,因为我已经变得更加舒服地阅读代码,假设任何指针都可以有效nil.

在"安全编码"级别上,我认为nil在每次发布后始终设置指针更为重要(可能releasedealloc方法中排除了一个).这样,您可以确保指针永远无效(它有效,或者nil).