向nil发送消息
在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用。Cocoa中的几种模式就利用到了这一点。发向nil的消息的返回值也可以是有效的:• 如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil)。例如:Person * motherInlaw = [ aPerson spouse] mother]; 如果spouse对象为nil,那么发送给nil的消息mother也将返回nil。
• 如果方法返回值为指针类型,其指针大小为小于或者等于sizeof(void*),float,double,long double 或者long long的整型标量,发送给nil的消息将返回0。
• 如果方法返回值为结构体,正如在《Mac OS X ABI 函数调用指南》,发送给nil的消息将返回0。结构体中各个字段的值将都是0。其他的结构体数据类型将不是用0填充的。
• 如果方法的返回值不是上述提到的几种情况,那么发送给nil的消息的返回值将是未定义的。
下面的代码段就是一个有效地向nil发送消息的示例:
- id anObjectMybeNil = nil;
- //这种写法是有效的
- if ( [ anObjectMaybeNil methordThatReturnADouble] == 0.0 )
- {
- //其他的实现代码
- }
在Objective-C中向nil发送消息是有效且被允许的,返回值取决于方法的类型。若返回值为对象,则返回nil;若为指针或特定大小的整型标量,则返回0;对于结构体,各字段将被置为0;其他情况下返回值未定义。
1118

被折叠的 条评论
为什么被折叠?



