0

私は3つのViewControllerを持っています。

これらの各コントローラーは、特定のCoreDataObjectで計算を実行する必要があります。

これらの計算は、オブジェクトのタイプとコントローラーによって異なります。

方法は、

performTimeOperations:(Year *) // VC1
performTimeOperations:(Month *) // VC2
performTimeOperations:(Day *) // VC3

それぞれ約50行のコードです。

しかし、それぞれのコードの変更は非常に小さいので、私は本当にこのようなIDを渡したかったのです。

performTimeOperations:(id)

そして、私が投げるあらゆる種類のオブジェクトを処理できるようにします。

主に私が行うすべての変更のために、私は3つの場所でそれをしなければなりません。

これをどこに実装しますか?そしてどうやって?

カテゴリを見るべきですか?また、これが私のappDelegateに含まれるべきではないと思います...しかし、3つの実装があるよりも確かに良い場所でしょうか?

アドバイスをいただければ幸いです

ありがとうございました!

ヌーノ

4

3 に答える 3

2

このメソッドを実装する共通の基本クラスからすべてのコアデータオブジェクトを継承させてみませんか?

すなわちの代わりに

Day -> NSManagedObject
Month -> NSManagedObject
Year -> NSManagedObject

あなたが持っているだろう

Day -> MyDateType -> NSManagedObject
Month -> MyDateType -> NSManagedObject
Year -> MyDateType -> NSManagedObject
于 2012-08-21T12:50:03.807 に答える
2

@deanWombourneが言ったように、オブジェクトに計算のさまざまな部分を実装することができます。または、単一の計算メソッドでオブジェクトタイプ(クラス)を確認することもできます。このメソッドをどこに配置するかはあなた次第です。あなたは私たちよりもあなたのコードをよく知っています。多分あなたは例えばを作成することができます。電卓クラスとそこに計算方法を置きます。

于 2012-08-21T12:53:18.773 に答える
0

2つのオプション、Cの方法:

id doYourThing(id arg) {
   //50 lines of code on the screen
   //50 lines of code on the ...
   return anAnswer;
}

静的メソッドの方法:

@interface AnAppropriateClass : NSSomething 
+ (id) doYourThing: (id) arg;
@end

@implementation AnAppropriateClass 
+ (id) doYourThing: (id) arg {
    //50 lines of code on the screen
    //50 lines of code on the ...
    return anAnswer;
}
@end

これらは両方とも

  1. インスタンスメソッドを使用するよりも高速
  2. より小さなバイナリを生成する
  3. 実行時のメモリフットプリントを小さくする
于 2012-08-21T13:18:27.120 に答える