2011-12-03 4 views
0

どのように対称的にプロパティをプログラムで作成できますか?目的でプロパティをプログラムで作成する-c

背景:

  • がとても効果的に、あなたが店から読み出されたデータに基づいて、
  • は、特に私は保存私の「イベントタイプ」を表現するためにいくつかの型指定されたプロパティを作成したいクラスのプロパティを作成しますコアデータで - イベントタイプは、イベントタイプのエンティティでcoredataでありながらので、私はクラスに実行時にそれらを読んで、リスト「EventTypes.ACTIVE_EVENT」、それらを参照することができ

私が念頭に置いていた全体的な目標だった:

  • コア・データ・ストア内のタイプを保つ
  • をモデル化するが、それでも(例えば容易管理オブジェクトタイプのインスタンスにアクセスする方法を持っていますACTIVE_EVENT)を単純なプロパティアプローチを使用してプログラムで実行します。
+0

サンプルコードを教えてください。 –

答えて

1

通常、Objective Cの通常のプロパティは、コンパイラにgetterおよびsetterのコードを生成させます。しかし、iOSアプリケーションでは、セキュリティサンドボックスの制限のために新しい実行可能コードを追加することはできないため、実行時にコンパイラと同じ方法でこれをプログラムで実行することはできません。

Objective Cランタイムを使用して、おそらく認識できないメッセージを処理するためのforwardInvocation:およびmethodSignatureForSelector:メソッドを使用して、プロパティの取得と設定をエミュレートします。バッキングプロパティ状態データは、例えば、クラスオブジェクトが保持するプロパティ要素のある種の変更可能な辞書に格納することができる。あたかもプログラマチックに作成したプロパティを実装したかのように、オブジェクトは動作します(少し遅くなります)。

+1

さまざまな型(id、intなど)に対してIMP型の実装を持つことができます。メソッドとしてクラスに動的に追加したり、プロパティを追加することもできます。 –

+0

@ hotpaw2このようなことは、直接行う方法がないことを暗示していますか? (つまり、私はあなたの提案を何の問題もなく解決していますか?) – Greg

関連する問題