私は疑いがあります。それは私には明らかではありません。Objective-C命名規則 - 明確化
@propertymyPropertyというクラス内にあるとします。私たちはそれを合成しながら2つのことを行うことができます。我々はそれに、_someIVarを言う、IVARを割り当てることができ、または私達はただ単に、コンパイラがそのプロパティのために、myPropertyに、同じ名前でIVARを作成するの世話をするその場合には、それを省略することができます。最初のケースでは、ivar_someIVarを使用してプロパティにアクセスできます。 2番目のケースでは、ivarmyPropertyがコンパイラによって作成されました。
今、我々はナビゲーションスタックに既に存在するビューコントローラから別のビューコントローラをプッシュするとき、私の疑問は、ある、我々が使用する、として
[self.navigationController pushViewController:newViewController animated:YES];
navigationControllerが、私はそれが必要と仮定し、プロパティですivarが割り当てられている必要があります。 2つの可能性しかありません。
1)アップルは、先にのアンダースコア(_)でivarsの名前を付けるという規則を持っています。この場合、私はpushViewControllerを呼び出すことができます:アニメーション:このような方法、
[_navigationController pushViewController:newViewController animated:YES];
2)第二の可能性は、明らかに、無アンダースコアとIVARで、
[navigationController pushViewController:newViewController animated:YES];
しかし、コンパイラをどちらの方法でもNavControllerにアクセスすることはできません。どうして?それは私有財産や何かに関係しているのでしょうか、あるいは私はObjective-Cを全く理解していませんか?
なぜこれをやりたいですか?カプセル化を中断しないでください。インスタンス変数は非常に良い理由のためにプライベートです。これらは実装の詳細であり、毎回変更できます。 –