Objective-C中的NULL与nil在observeValueForKeyPath:ofObject:change:context:- 为什么文档使用NULL而不是nil在不指定上下文指针时?
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
nil
应该只用来代替一个id
,我们Java和C ++程序员会认为它是一个指向对象的指针。使用NULL
非对象指针。
看一下该方法的声明:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Context是一个void *
(即一个C风格的指针),所以你肯定使用NULL
(有时被声明为(void *)0
)而不是nil
(类型id
)。
holdtom
TA贡献1805条经验 获得超10个赞
它们在技术上是相同的,仅在风格上有所不同:
Objective-C样式表示
nil
用于id
类型(和指向对象的指针)。C风格说这
NULL
就是你用的void *
。C ++风格通常表示您应该使用
0
。
我通常使用与声明类型的语言匹配的变体。
- 3 回答
- 0 关注
- 558 浏览
添加回答
举报
0/150
提交
取消