纯属偶然,我发现调用[bar.view addSubview:[foo view]]
不起作用,但[bar.view addSubview:foo.view]
在以下代码中起作用。
foo=[fooViewController alloc] initWithNibName:@"fooViewController" andBundle:nil];
[self.view addSubview:foo.view];//here's where I swap the two commands out
[foo aFunctionThatSendsAMessageToOneOfFoosSubViews];
(最后一行是因为foo
有一些子视图需要在运行之前设置——特别是 a UIWebView
。如果在发送消息之前它们没有被实例化,则消息最终会转到nil
. 和foo
。)
我认为这两者在功能上是相同的——foo.view
调用相同的 getter [foo view]
,但实际上并非如此;点语法得到了想要的结果,而使用方括号最终将消息发送到nil
.
如果你十分钟前问我,我会告诉你这两种表达方式的区别是“语法,仅此而已”。鉴于我显然错了,我需要了解我是如何错的,否则我会再次绊倒它。