有人可以解释为什么同一个表达式的第二个语法不起作用?如果你需要一些背景知识,manyViews
是一个指向加载了UIView对象的NSMutableArray的指针。
[[manyViews objectAtIndex:0] setFrame:CGRectMake(30,30,100,20)]; // works as intended
[manyViews objectAtIndex:0].frame = CGRectMake(30,30,100,20); // compiler does not recognize the "frame" member
答案 0 :(得分:1)
编译器的当前限制(gcc和Clang)。点符号无可救药地重载,编译器认为您正在尝试在结构中分配字段。 id不是结构,因此它给出了错误。我自己使用它,但我仍然说点符号肯定是ObjC2中最糟糕的添加。它给程序员带来了很多困惑,正如我们在这里看到的那样,经常会给编译器带来困惑。
gcc或clang的更高版本可能会找到一种正确解析它的方法。