Syntax question on accessing properties of objects stored in a NSMutableArray
Could someone explain why the second syntax of the same expression does not work? If you need some background, manyViews
is a pointer to an NSMutableArray loaded with UIView objects.
[[manyViews objectAtIndex:0] setFrame:CGRectMake(30,30,100,20)]; // wor开发者_运维问答ks as intended
[manyViews objectAtIndex:0].frame = CGRectMake(30,30,100,20); // compiler does not recognize the "frame" member
Current limitation of the compiler (both gcc and Clang). Dot notation is hopelessly overloaded, and the compiler thinks you're trying to assign a field in a struct. The id isn't a struct, so it gives an error. I use it myself, but I still say dot notation was definitely the worst addition in ObjC2. It creates a lot of confusion for programmers, and as we see here, often creates confusion for the compiler.
Later versions of gcc or clang may work out a way to parse this correctly.
精彩评论