0

我犯了一个意外错误,发现它仍然有效。我只是在此处的视图上重新创建了它以进行演示。忽略我使用的属性和我分配的值。

self.view. frame = CGRectZero;
self.view. tag = 23;

NSLog(@"%@",NSStringFromCGRect(self.view.frame));
NSLog(@"%i",self.view.tag);

编译器如何看待这个并且可以接受?

4

1 回答 1

4

因为在 C 和 Objective-C 中,标记之间的空格无关紧要。解析源文本时,编译器反复调用词法分析器(并构建抽象数据结构来表示源代码)。词法分析器函数只对非空白标记感兴趣(有一些偏差,但这种观察通常是正确的),无论您如何组织代码,

object.member

object .member

object. member

object . member

都将被识别为完全相同的标记序列:<ident> <memberof> <ident>.

于 2013-03-29T06:37:11.653 回答