作者:Mitchell
- 自動提示宏:就是在輸入宏的時候有提示功能
- 應用場景: 想輸入對象的屬性的時候有提示
- 示例
#define keyPath(objc,keyPath) @(((void)objc.keyPath, #keyPath))
- 自動提示宏:(objc.keyPath)這一部分內容,僅僅是讓你的宏具有提示功能
- 為什么要加(void)?,這里是一個語法問題,逗號表達式的內容,
- 例如:
int a = (3,5);
- a的值肯定是5,而且會報一個3沒使用的警告,我們如何消除這個警告?
int a = ((void)3,5);
這樣就會消除這個警告。
- 那么這句話((void)objc.keyPath, #keyPath)
就會返回 #keyPath 內容,keyPath 就是我們對象的屬性,但是這個時候返回的是屬性,因為宏定義是 C 語言的內容所以我們先需要將內容轉換為 C 語言的字符串,也就是#keyPath。
- 這個時候返回的是 C 語言的字符串,而我們想要的是 OC 的字符串,直接使用 @()
這個語法 就可以了。