很久沒寫過東西了,寫個(gè)自己常碰到的一個(gè)小點(diǎn)??...
說點(diǎn)場(chǎng)景
在開發(fā)中, 在block代碼塊
中我們經(jīng)常需要對(duì)控制器做弱引用, 這個(gè)時(shí)候關(guān)鍵字tppeof
就派上用場(chǎng), 可是我們經(jīng)常會(huì)看到有的人是這樣使用的__weak __typeof__(self) wself = self;
有的是這樣使用的__weak typeof(self) wself = self;
, 有的是這樣使用的__weak __typeof(self) wself = self;
, 這三種方式有什么區(qū)別呢
啥原因
__typeof__()
和 typeof()
和 __typeof()
等都是C語言的擴(kuò)展, 要表達(dá)的意思都是一樣的, 這個(gè)時(shí)候需要說到C的發(fā)展, 其中兩個(gè)階段, GNUC 和 標(biāo)準(zhǔn)C在GNUC環(huán)境下, 其擴(kuò)展是支持直接寫__typeof__()
和typeof()
和__typeof()
而在標(biāo)準(zhǔn)C環(huán)境下, 其擴(kuò)展是以__
開頭, 所以其只能寫成__typeof__()
和__typeof()
開發(fā)怎么處理
iOS開發(fā)中, 我們知道是使用Clang編譯器
, 默認(rèn)用的C語言版本是GNU11, 但為什么我們卻可以使用typeof()
呢, 原來在Xcode的IDE中默認(rèn)設(shè)置了支持typeof
和inline
和asm
等, 截圖如下:
但是若是你把C語言的支持設(shè)置為標(biāo)準(zhǔn)C, 則Xcode就不會(huì)支持, 截圖如下:
回顧一下
鑒于上面這些知識(shí), 在開發(fā)中, 為了更好的代碼規(guī)范, 建議還是使用__typeof__()
和__typeof()
, 寫到這里吧, 周末快樂??