Чисто случайно я обнаружил, что вызов [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
имеет некоторые вложенные представления, которые необходимо настроить перед запуском, в частности, UIWebView
. Если они не были созданы досообщение отправлено, сообщение заканчивается на nil
. С foo
.)
Я думал, что эти два функционально идентичны - что foo.view
вызывает тот же геттер, что и [foo view]
, нона практике это не так;точечный синтаксис дает желаемые результаты, в то время как использование скобок приводит к отправке сообщения на номер nil
.
Если бы вы спросили меня десять минут назад, я бы сказал, что разница между этими двумя выражениями была«Синтаксис и ничего больше».Учитывая, что я явно неправ, мне нужно понять, КАК я ошибаюсь, или я снова споткнусь об этом.