很久没写过东西了, 也许是工作忙, 也许...好吧, 我承认是自己懒了😂, 高深的现在还没整理好, 先写个自己常碰到的一个小点😂, 大神请忽略😂
说点场景
在开发中, 在block代码块中我们经常需要对控制器做弱引用, 这个时候关键字tppeof就派上用场, 可是我们经常会看到有的人是这样使用的__weak __typeof__(self) wself = self;有的是这样使用的__weak typeof(self) wself = self;, 有的是这样使用的__weak __typeof(self) wself = self;, 这三种方式有什么区别呢
啥原因
__typeof__()和 typeof() 和 __typeof()等都是C语言的扩展, 要表达的意思都是一样的, 这个时候需要说到C的发展, 其中两个阶段, GNUC 和 标准C在GNUC环境下, 其扩展是支持直接写__typeof__()和typeof()和__typeof()而在标准C环境下, 其扩展是以__开头, 所以其只能写成__typeof__()和__typeof()
开发怎么处理
iOS开发中, 我们知道是使用Clang编译器, 默认用的C语言版本是GNU11, 但为什么我们却可以使用typeof()呢, 原来在Xcode的IDE中默认设置了支持typeof和inline和asm等, 截图如下:
编译对特定词的支持.png
但是若是你把C语言的支持设置为标准C, 则Xcode就不会支持, 截图如下:
标准C.png
错误.png
回顾一下
鉴于上面这些知识, 在开发中, 为了更好的代码规范, 建议还是使用__typeof__()和__typeof(), 写到这里吧, 周末快乐😂












网友评论