LLVM4更新 簡化物件定義

2021-06-28 16:31:01 字數 2234 閱讀 9839

簡介: llvm4.0 更新(在xcode4.4引入)中,新增了一些新的簡便**書寫的方法

新增文字的數字,陣列,字典,以及表示式的語法

得益於 llvm 編譯器 4.0 的更新,增加了許多新特性,其中包括更方便的**輸入。這一更新可大大提高寫**的效率。這要在定義時使用@符號,正如nsstring定義操作一樣。

1. 所有的 nsnumber 表達

從 xcode 4.4 起,所有的 [nsnumber numberwithint: 10] 之類的表達現在都可以寫作 @10,

如:// 單個字元

nsnumber *theletterz = @'z';   // 相當於 [nsnumber numberwithchar:'z']

// 整形

nsnumber *fortytwo = @42;  

// 相當於 [nsnumber numberwithint:42]

nsnumber *ftunsigned = @42u;   // 相當於 [nsnumber numberwithunsignedint:42u]

nsnumber *ftlong = @42l;  

// 相當於 [nsnumber numberwithlong:42l]

nsnumber *ftlonglong = @42ll;  // 相當於 [nsnumber numberwithlonglong:42ll]

// 浮點

nsnumber *pifloat = @3.141592f;// 相當於 [nsnumber numberwithfloat:3.141592f]

nsnumber *pidouble = @3.141592;// 相當於 [nsnumber numberwithdouble:3.141592]

// 是 / 否

nsnumber *yesnumber = @yes;  

// 相當於 [nsnumber numberwithbool:yes]

nsnumber *nonumber = @no;  

// 相當於 [nsnumber numberwithbool:no]

2. 新的 nsarray, nsdictionary 輸入方法

以前想要建立乙個新的 nsdictionary, 你必須不厭其煩地輸入:

nsdictionary *options = [nsdictionary dictionarywithobjectsandkeys: [nsnumber numberwithbool:yes], @"backup",[nsnumber numberwithint:7],@"daystokeepbackup",@"foo",@"flags", nil];

現在只用輸入:

nsdictionary *options = @;就可以達到同樣的效果。

nsarray 的輸入方法也變得更簡單:之前的

nsarray *items = [nsarray arraywithobjects:@"item1",[nsnumber numberwithbool:yes],[nsnumber numberwithint:12], nil];

現在只用輸入:

nsarray *items = @[ @"item1", @yes, @12 ];

3. 巢狀表示式 (boxed expressions)

最新版本的 objective-c 還提供了一種新的書寫方式:

@( expression )

bool 和 int 的結果有時候需要被計算才能得到。這時候你便可以將表示式放入一對括號中。比如:

nsnumber *total = @(0.2f - 1.9f); //[nsnumber numberwithfloat:0.2f - 1.9f]

nsnumber *piot = @(m_pi / 2);  

//[nsnumber numberwithdouble:(m_pi / 2)]

4. 建立新 property 不用再合成

公升級到 xcode 4.4 後,在標頭檔案中建立的 @property 均無需再進行 @synthesize。xcode 將自動合成。

@synthesize object = _object;

LLVM 4中將加入新的LLVM鏈結器LLD

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd amd64基系統 base system 但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。在最新發布的freebsd專案季度狀態報告中,...

LLVM 4中將加入新的LLVM鏈結器LLD

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd amd64基系統 base system 但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。在最新發布的freebsd專案季度狀態報告中,...

LLVM 4中將加入新的LLVM鏈結器LLD

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd amd64基系統 base system 但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。在最新發布的freebsd專案季度狀態報告中,...