很久没写过东西了, 也许是工作忙, 也许...好吧, 我承认是自己懒了😂, 高深的现在还没整理好, 先写个自己常碰到的一个小点😂, 大神请忽略😂
说点场景
在开发中, 在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
等, 截图如下:
但是若是你把C语言的支持设置为标准C, 则Xcode就不会支持, 截图如下:
标准C.png 错误.png回顾一下
鉴于上面这些知识, 在开发中, 为了更好的代码规范, 建议还是使用__typeof__()
和__typeof()
, 写到这里吧, 周末快乐😂
网友评论