dav*_*Mac 4 syntax struct properties objective-c
前几天我通过使用花括号来设置C Structs的值时遇到了一些东西,它很有用,但我想知道为什么我不能用它来设置属性的值?
//This works:
CGPoint pt = {10, 20};
CGRect rct = {0, 5, 50, 50};
//But this doesn't:
self.frame = {0, 5, 50, 50};
imageview.center = {100, 120};
Run Code Online (Sandbox Code Playgroud)
编译器错误是"预期表达式"
我想我知道为什么这不起作用,但我想要更彻底的解释.
第一行结合了变量的声明和初始化.编译器从左表达式的类型推断出正确表达式的类型,并按预期在结构槽中分配数字.
然而,最后一行不是初始化.现在编译器不会推断任何东西.因此,编译器不知道它应该如何解释右边的东西.它的类型是什么,如何在内存中布局这些数字?编译器不会假设它的CGrect或CGPoint,你必须使用显式强制转换(CGRect){0,5,50,50}来帮助他,这会给他提供缺失的信息.