Objective-C中的NULL与nil

Objective-C中的NULL与nil

observeValueForKeyPath:ofObject:change:context:- 为什么文档使用NULL而不是nil在不指定上下文指针时?



守候你守候我
浏览 526回答 3
3回答

慕桂英546537

nil应该只用来代替一个id,我们Java和C ++程序员会认为它是一个指向对象的指针。使用NULL非对象指针。看一下该方法的声明:- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object     change:(NSDictionary *)change context:(void *)contextContext是一个void *(即一个C风格的指针),所以你肯定使用NULL(有时被声明为(void *)0)而不是nil(类型id)。

不负相思意

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

holdtom

它们在技术上是相同的,仅在风格上有所不同:Objective-C样式表示nil用于id类型(和指向对象的指针)。C风格说这NULL就是你用的void *。C ++风格通常表示您应该使用0。我通常使用与声明类型的语言匹配的变体。
打开App,查看更多内容
随时随地看视频慕课网APP