我從來沒有見過這樣的演員:演員在Objective-C的
(CGRect){.origin = CGPointZero, .size = contentSize}
(CGPoint){0,1}
有人能解釋的邏輯是什麼?這是一個C語言功能嗎?還是僅在Objective-C中? 謝謝。
我從來沒有見過這樣的演員:演員在Objective-C的
(CGRect){.origin = CGPointZero, .size = contentSize}
(CGPoint){0,1}
有人能解釋的邏輯是什麼?這是一個C語言功能嗎?還是僅在Objective-C中? 謝謝。
它被稱爲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 }];
我懷疑OP是在問什麼:指定的初始值設定項只允許在初始化結構中使用,而且不需要強制轉換。 – dasblinkenlight
我編輯我的帖子與更多的信息。 – Alexander
根據上下文的不同,這也可能是複合文字特徵([link](http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Compound-Literals.html))。 – dasblinkenlight
'{.origin = CGPointZero,.size = contentSize}'是指定結構初始化 - 一個C99特徵。 – ajay