Objc是一门非常啰嗦的语言,而且历史悠久,背靠C语言,发展缓慢。自从苹果有了新宠swift,更是对他不管不顾了,所以有很多现代语言拥有的优秀特性,Objc都无法享受到。其中一项就是类型推断。
每次我们在定义变量的时候,都需要先写类型,而Objc中类型名字又往往非常的长,所以很多时候一行初始化代码就让我们感到非常冗长。
1 | MYDoSomethingViewController *viewController = [[MYDoSomethingViewController alloc] init]; |
而大部分时间,这些变量的含义相当明确,我们也并不需要去知道具体的类型,而我们却要每次去声明一次,显得非常多余。
得益于C语言的发展,在2015年,GCC和LLVM都先后的支持了类型推断,这样我们可以用于日常开发来增加代码可读性和简洁性。
首先我们定义两个类型推断关键字:
1 |
以下是两者的对比:
1 | - (void)t { |
1 | - (void)t { |
遗憾的是,由于这个特性是C语言的特性,所以目前无法识别oc中的一些特定语法,比如forin和容器模板类型。