Xcode 4.4 的新特性 | LLVM 4.0 的新语法
WWDC 2012蘋果全球開發者大會上,蘋果針對LLVM編譯器都做了重大改進,新版的Xcode 4.4中的LLVM編譯器升級到了4.0,給Objective-C帶來了很多令人驚喜的特性。
注意,下面的語法需要下載Xcode 4.4。
1、枚舉類型的改變
老寫法:
?
[cpp]?view plaincopy老方法的問題是枚舉值的數據范圍是模糊的,這個數值可能非常大,可能是負數,無法界定
?
新寫法:
?
[cpp]?view plaincopy 新方法在列出枚舉內容的同時綁定了枚舉數據類型NSUInteger,這樣帶來的好處是增強的類型檢查和更好的代碼可讀性。
?
2、使用的方法代碼放置的位置順序無關
沒在.h文件中聲明的方法,在時候的時候如果方法不在前面,可能會有警告。
比如:
?
[cpp]?view plaincopy
實現:
早期編譯器編譯時會出現:warning: instance method ‘-getString:’ not found…
?
新的編譯器會先掃描代碼中的方法,然后再編譯,這樣就避免了找不到方法這種情況了
3、property屬性簡化
?
@property對于使用Objective-C的程序員來說是相當熟悉的,property方便自動生成變量的getter 和setter。在.h文件中聲明之后,還要在.m文件中加上@synthesize關鍵字,這樣才能完成自動getter 和setter的過程。
比如說,我在.h文件中寫了
?
@property?(strong,?nonatomic)?NSDictionary?*order;
我還要去對于的.m文件中寫上
?
@synthesize?order;
是不是感覺很多余啊?現在在語法新特性中不用寫這行代碼了,新版的編譯器幫你實現這行代碼,這叫幫人幫到底。
也是說,你在.h文件中聲明order屬性后,就可以直接在實現文件中使用該屬性的getter和setter方法,編譯器還會根據屬性的可讀和可寫自動判斷是否提供setter方法。智能多了。
4、語法的簡化
做過java 或C#開發的都知道,初始化或賦值一個變量一般用一個“=”號就搞定了,到了Objective-C后,每次都要用一個很長的函數才能賦值活初始化。現在簡化多了。
咱們看看各個數據類型簡化前后的對比。
4.1、NSNumber 類型
老寫法:
?
[cpp]?view plaincopy?
新寫法:
?
[cpp]?view plaincopy?
4.2、NSArray類型
老寫法:
?
[cpp]?view plaincopy
新寫法:
?
?
[cpp]?view plaincopy
新的寫法去掉了后面討厭的nil。
?
4.3、NSDictionary類型
老寫法
[cpp]?view plaincopy新寫法
?
?
[cpp]?view plaincopy?
運行結果正常:
{
? ? key1 = value1;
? ? key2 = value2;
? ? key3 = value3;
}
5、快速通過下標定位對象
他們說新的語法這樣是可以的,數組和字典都可以通過下標訪問,
?
[cpp]?view plaincopy可是事實是這樣的:
?
現實總是殘忍的。于是google 了一下,發現這個語法是針對iOS 6 or OS X 10.8 SDKs的,我沒有ios 6模擬器而已沒有10.8 SDKs。所以報錯了??梢詤⒖歼@里:http://stackoverflow.com/questions/11425976/compiler-error-expected-method-not-found-when-using-subscript-on-nsarray
下面是WWDC 2012視頻的一些關于新語法特性的截圖:
截圖可以給你解釋,新的語法特性編譯器是怎么實現的。
轉載于:https://www.cnblogs.com/easonoutlook/archive/2013/05/30/3108091.html
總結
以上是生活随笔為你收集整理的Xcode 4.4 的新特性 | LLVM 4.0 的新语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android listview的一些设
- 下一篇: office 自动编号系列碰到问题小解