为了账号安全,请及时绑定邮箱和手机立即绑定

Objective-C中的NULL与nil

Objective-C中的NULL与nil

守候你守候我 2019-08-09 17:52:22
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)。


查看完整回答
反对 回复 2019-08-09
?
不负相思意

TA贡献1777条经验 获得超10个赞

它们在技术上是相同的(0),但是nil通常用于Objective-C对象类型,而NULL用于c样式指针(void *)。


查看完整回答
反对 回复 2019-08-09
?
holdtom

TA贡献1805条经验 获得超10个赞

它们在技术上是相同的,仅在风格上有所不同:

  • Objective-C样式表示nil用于id类型(和指向对象的指针)。

  • C风格说这NULL就是你用的void *

  • C ++风格通常表示您应该使用0

我通常使用与声明类型的语言匹配的变体。


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 558 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信