如果引用没有指向任何实例,为什么仍然可以调用实例方法?

时间:2012-04-30 06:52:09

标签: objective-c objective-c-runtime

  

可能重复:
  Sending a message to nil?

如果对NSMutableArray的引用根本没有指向任何对象,因为没有实例化,为什么仍然可以在没有任何运行时错误的情况下调用实例方法?

NSMutableArray *foo = nil;
NSLog(@"[null count] is %i", [foo count]);

NSLog(@"[null count] again is %i", [(NSMutableArray *) nil count]);

上述行打印0而不是导致内存访问不正确或导致错误,表明没有实例。

1 个答案:

答案 0 :(得分:1)

直接来自 Objective-C编程语言: In Objective-C, it is valid to send a message to nil—it simply has no effect at runtime.

如果您继续阅读,您会看到[nil count]返回0的原因。