舆论口水喷苹果从设计的引领者倒退到了追随者,但是在编程语言上的现代化理解,苹果一直独领风骚。
一、Objective-C进化的理念
这次的革新:Modules、更高效、ARC提升
二、Modules
之前写代码时,如果加入一些框架,比如iAd、GameCenter等,不能简单的import进来
#import <iAd/iAd.h> (错误)
如果这样引入,直接Build failed。得在工程设置里面,像这样引入框架。
这样就显得繁琐,很不易于使用
进化过后的Objective-C支持下面的语句,可以直接导入iAd框架。
@import iAd; (全部导入)
@import iAd.ADBannerView; (选择性导入)
#import <iAd/ADBannerView.h> (支持这种语句,兼容老的代码)
这样一来再也不需要去手动添加框架,同时由于Modules改变了引入的模式,使用新的机制能够一定程度提升性能。
使用新的Xcode,然后开启Modules,一切就OK了,不用对代码做任何修改!
小结一下Modules
三、更高效
更现代的Objective-C语法
例如,下面是老的代码写法
-(NSDictionary *)example {
return [NSDictionary dictionaryWithObjectsAndKeys:
@"Willie", @"PreferredName",
@"The Lion", @"NickName",
@"Smith", @"LastName",
@"William", @"FirstName",
[NSArray arrayWithObjects: @"Henry", @"Joseph",
@"Bonaparte",@"Bertholoff", nil], @”MiddleNames”,
[NSNumber numberWithInt: 79], @”Age”,
[NSNumber numberWithInt: 1893], @”BirthYear”,
[NSNumber numberWithInt: 1973], @”DeathYear”,
[NSNumber numberWithBool: YES], @”Male”,nil];
}
这个是新的支持语法风格
-(NSDictionary *)example {
return @{
@”PreferredName”: @”Willie”,
@”NickName”: @”The Lion”,
@”LastName”: @”Smith”,
@”FirstName”: @”William”,
@”MiddleNames”: @[ @"Henry", @"Joseph", @"Bonaparte", @"Bertholoff" ],
@”Age”: @79,
@”BirthYear”: @1893,
@”DeathYear”: @1973,
@”Male”: @YES
};
}
这样以来,减少了很多重复来重复去的输入,极大提升了代码书写效率,也能让代码变的更加易于阅读。现代的语法风格就举一例,更多的用法自行查阅文档。
Objective-C 的语法一直在最求更易阅读,读起来就像英语一样,一目了然,优雅大气。
同时Xcode这个强大的SDK,一直在提升。这次的进化包括:更强的纠错,更安全,枚举类型直接显示类型,甚至还有一个新的关键字(instancetype,使用这个加入了对返回值的纠错)。
四、Garbage Collection(垃圾回收) 和 ARC(Automatic Reference Counting 自动引用计数)
垃圾回收机制已经不再使用,全面使用ARC机制。
ARC的进化
总体来说Objective-C 正是有了 Apple 的对之的不断提升和IDE的不断进化,表现出独特的蓬勃活力,变的更加优雅美丽,不断有新的血液注入,虽然一定程度增加了学习成本,但是换来的是高效和便捷,何乐而不为呢。