2014-04-16 41 views
0
結構

我從來沒有見過這樣的演員:演員在Objective-C的

(CGRect){.origin = CGPointZero, .size = contentSize} 
(CGPoint){0,1} 

有人能解釋的邏輯是什麼?這是一個C語言功能嗎?還是僅在Objective-C中? 謝謝。

+2

'{.origin = CGPointZero,.size = contentSize}'是指定結構初始化 - 一個C99特徵。 – ajay

回答

3

它被稱爲designated initializer,它是C語言的一個特性。前面的轉換是一種便捷的方法,可以在單行上初始化結構或作爲函數的參數,例如

結構初始化:

struct a test; 
test.member1 = 3; 
test.member2 = 5; 

// equals 

struct a test = (struct a){ .member1 = 3, .member2 = 5 }; 

函數參數傳:

[self function1:test]; 

// equals 

[self function1:(struct a){ .member1 = 3, .member2 = 5 }]; 
+1

我懷疑OP是在問什麼:指定的初始值設定項只允許在初始化結構中使用,而且不需要強制轉換。 – dasblinkenlight

+0

我編輯我的帖子與更多的信息。 – Alexander

+1

根據上下文的不同,這也可能是複合文字特徵([link](http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Compound-Literals.html))。 – dasblinkenlight