2012-03-16 12 views
1

概要のiOS - カテゴリの実装ファイルでアウトレット

  • Iが大きくなると、機能
  • に基づいてカテゴリに分割する方が良いだろうと思ったのビューコントローラの実装iOSのプロジェクトを持っています
  • ビューコントローラ実装ファイルのアウトレットは、カテゴリの実装ファイルで使用できません。

- 私はARC(自動参照カウント)

質問

  1. を使用していますが、私は私のビューコントローラの実装ファイルで作成されたテキストフィールドへの出口を持っています。ここで、テキストフィールドの別のコンセントをビューコントローラカテゴリの実装ファイルに作成できますか?
  2. メモリが解放されない、または他のメモリの問題が発生しますか(コンセントは両方ともweaknon atomicになります)。
  3. これは設計の観点から受け入れられますか、それとももっと良い方法がありますか?
  4. ビューコントローラの実装でカテゴリのメソッドにアクセスできますか?私は、ヘッダファイルを含めることができますが、私は、実行時に任意の予期しない動作

答えて

1

あなたのビューコントローラクラスのカテゴリーで宣言IBOutletプロパティにアクセスする必要がある場合、彼らはあなたのカテゴリに利用できるように、なぜクラスのヘッダーファイルでそれらを宣言していませんか?実装ファイルのプロパティとivarsを宣言する機能は、実装の面倒な詳細を隠すことを目的としていますが、コードを扱いにくいものにするリスクはありません。あなたの機能的なデザインは合理的です。

+0

あなたのレスポンスに感謝します。あなたの答えに基づいて、私はすべての店舗を含むカテゴリを作成し、それを合成することができたかもしれないと思ったので参考になりました。このカテゴリのヘッダーファイルは、ビューコントローラやその他のカテゴリの実装にのみ含めることができます。そうすれば、私はアウトレットにアクセスできます。アウトレットを含むカテゴリのヘッダーファイルを外部には含めません。 – user1046037

+0

UIのプライベートアクセスを維持する必要があるほど、それは妥当と思われます。 – FluffulousChimp

+0

ええ、唯一のことは、View Controllerの実装ではまだそれらを宣言して合成する必要があることです.bcuzカテゴリの実装ではプロパティを合成できません。カテゴリの実装ファイルに@dynamic以外のアウトレットのコピーと貼り付けがあります – user1046037

1
  1. が存在することになるかどうかを知りたいあなたは必要な数の店を持つことができ、彼らはあなたがオブジェクトを変更することができますポインタですそれらを通る。

  2. アークを使用していて、テキストフィールドを作成するためにInterface Builderを使用していると仮定した場合、weakに設定するため、これらのポインタはオブジェクトの保持カウントにカウントされません。少なくとも1つの強いポインタがそれを指している限り、生き続ける。この場合、Interface Builderのビューはオブジェクトを保持するようにそのビューが割り当て解除されたときにそれを保持しています。原子がないということは安全ではないということを意味しますが、これはあなたの目的には関係ありません。

  3. iOS上で開発するときにMVCモデルに固執しようとすることに私は助言することしかできませんので、本当にあなたのプログラムに依存します。 https://developer.apple.com/library/ios/#documentation/General/Conceptual/CocoaEncyclopedia/Model-View-Controller/Model-View-Controller.html

+0

お返事ありがとうございました。私はあなたの言ったことが理にかなっていると思います。私がちょうど私がカテゴリーで同じコンセント名を使用するつもりなら、ちょっと感じました。同じ実装の2つのバージョンがないように@ @動的なものを使うのが一番です – user1046037