IBをアシスタントビューと組み合わせて使用する場合、IB内の要素を制御して.hファイルにドラッグし、コンセントを作成します。変数宣言ブロック内またはブロック外のいずれかに2つの場所のいずれかにドラッグできます。あなたは、可変ブロックの内側にそれをドラッグするとIBOutlet、変数、プロパティ、またはその両方を接続していますか?
あなたはこのような何かを得る:ブロックの外側にドラッグ
@interface MyViewController : UIViewController {
IBOutlet UIButton *foo;
}
はあなたのような何かを与える....私が考えた
@interface ViewController : UIViewController {
}
@property (retain, nonatomic) IBOutlet UIButton *foo;
彼らはどう違っていて、私はちょっと混乱しています。私は、合成されたプロパティがいくつかの魔法を行い、実行時にインスタンス変数を作成することを理解しています(64ビット/ ARMのみ)。だから私は2つのオプションの仕組みを理解していると信じています。
何が最適ですか?最初のオプションはコード生成が少なく、簡単です。
2番目のバージョンではパブリックアクセサリやミューテータが提供されていますが、クラス外のアウトレットにアクセスすることはほとんどありません(ほとんどの場合、カプセル化されています)。私がiOSの仕事を始めた時から、私はこのオプションを独占的に使用しました。
ほとんどの場合、何もないか、変数ベースのアウトレットに切り替える必要がありますか?
.mで使用しないIBOutletは何ですか?アクションは参照に渡されるので、実際にはIBActionsには必要ありません。 なぜ私はこの時点で両方を望んでいますか?コンパイラが実行時に私のインスタンス変数を追加し、プロパティを使用するときに私のためにインスタンス変数を管理する場合、手動でそれを追加することはありますか? – DBD
webviewなど、.mでさらに実装する必要があるものがある場合にのみ、両方を必要とします。あなたはアクションのためにそれを接続する可変コンセント、ホームページ、ロードリクエストなどの機能を追加するプロパティを必要とします。 – JTApps