Objective-C中的NULL與nil在observeValueForKeyPath:ofObject:change:context:- 為什么文檔使用NULL而不是nil在不指定上下文指針時(shí)?
3 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
nil
應(yīng)該只用來代替一個(gè)id
,我們Java和C ++程序員會認(rèn)為它是一個(gè)指向?qū)ο蟮闹羔槨J褂?code>NULL非對象指針。
看一下該方法的聲明:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Context是一個(gè)void *
(即一個(gè)C風(fēng)格的指針),所以你肯定使用NULL
(有時(shí)被聲明為(void *)0
)而不是nil
(類型id
)。

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
它們在技術(shù)上是相同的(0),但是nil通常用于Objective-C對象類型,而NULL用于c樣式指針(void *)。

holdtom
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
它們在技術(shù)上是相同的,僅在風(fēng)格上有所不同:
Objective-C樣式表示
nil
用于id
類型(和指向?qū)ο蟮闹羔槪?/p>C風(fēng)格說這
NULL
就是你用的void *
。C ++風(fēng)格通常表示您應(yīng)該使用
0
。
我通常使用與聲明類型的語言匹配的變體。
- 3 回答
- 0 關(guān)注
- 598 瀏覽
添加回答
舉報(bào)
0/150
提交
取消