作者:Mitchell
- 自動(dòng)提示宏:就是在輸入宏的時(shí)候有提示功能
- 應(yīng)用場(chǎng)景: 想輸入對(duì)象的屬性的時(shí)候有提示
- 示例
#define keyPath(objc,keyPath) @(((void)objc.keyPath, #keyPath))
- 自動(dòng)提示宏:(objc.keyPath)這一部分內(nèi)容店煞,僅僅是讓你的宏具有提示功能
- 為什么要加(void)叨粘?渺贤,這里是一個(gè)語(yǔ)法問(wèn)題,逗號(hào)表達(dá)式的內(nèi)容碎乃,
- 例如:
int a = (3,5);
- a的值肯定是5急黎,而且會(huì)報(bào)一個(gè)3沒(méi)使用的警告,我們?nèi)绾蜗@個(gè)警告膀曾?
int a = ((void)3,5);
這樣就會(huì)消除這個(gè)警告。
- 那么這句話((void)objc.keyPath, #keyPath)
就會(huì)返回 #keyPath 內(nèi)容阳啥,keyPath 就是我們對(duì)象的屬性,但是這個(gè)時(shí)候返回的是屬性财喳,因?yàn)楹甓x是 C 語(yǔ)言的內(nèi)容所以我們先需要將內(nèi)容轉(zhuǎn)換為 C 語(yǔ)言的字符串察迟,也就是#keyPath斩狱。
- 這個(gè)時(shí)候返回的是 C 語(yǔ)言的字符串,而我們想要的是 OC 的字符串扎瓶,直接使用 @()
這個(gè)語(yǔ)法 就可以了所踊。