Rein zufällig entdeckte ich, dass Aufruf [bar.view addSubview:[foo view]]
nicht funktioniert, aber [bar.view addSubview:foo.view]
tut im folgenden Code.Warum verhält sich [foo view] anders als foo.view in meinem Code?
foo=[fooViewController alloc] initWithNibName:@"fooViewController" andBundle:nil];
[self.view addSubview:foo.view];//here's where I swap the two commands out
[foo aFunctionThatSendsAMessageToOneOfFoosSubViews];
(Das letzte Zeile ist, weil foo
einige Unter Ansichten hat, die müssen vor eingerichtet werden zu laufen -. Vor allem ein UIWebView
Wenn sie, bevor die Nachricht nicht die Nachricht gesendet instanziiert worden ist, gehen nil
aufwickelt Mit foo
)
ich dachte, diese beiden funktional identisch waren - dass foo.view
die gleiche Getter aufruft, die [foo view]
tut, aber in der Praxis nicht der Fall ist..; Die Punktsyntax erhält die gewünschten Ergebnisse, während die Verwendung der Klammern die Nachricht an nil
sendet.
Wenn Sie mich vor zehn Minuten gefragt hätten, hätte ich Ihnen gesagt, der Unterschied zwischen den beiden Ausdrücken sei "Syntax und nichts anderes". Da ich eindeutig falsch liege, muss ich verstehen, WIE ich falsch liege, oder ich werde wieder darüber stolpern.
Haben Sie versucht, die tatsächliche Ausgabe von '[foo view]' und 'foo.view' zu vergleichen? Sie müssen gleich sein. – Costique
Eigentlich ja. Ich habe NSLog (@ "View Info:% @", [foo view]) und eine ähnliche foo.view-Anweisung verwendet. Identisch - auch wenn ich sie umkehre. Die scheinen das exakt gleiche Ding zurückzugeben. – RonLugge
Wenn Sie Ihren Code im Assistenten-Editor von Xcode anzeigen und im Drop-down-Menü "Tuxedo" die Option "Assembly" auswählen, bemerken Sie einen Unterschied zwischen der Verwendung der Punktsyntax und Klammern? –