私はObjective-Cを学び、オブジェクト指向デザインのスキルを少し向上させるための電卓アプリを作成しています。よりMVCのようなことをするために、私は実際の電卓関連のコードをViewControllerから分離しました。すべてのアクションについて、View Controllerが行うほとんどすべてのことは、「モデル」にそのアクション用の操作を実行するように指示することです。
つまり、次のように、基本的にアクションをモデルに転送するだけの一連のメソッドが得られます。
- (IBAction)clearAll:(id)sender {
[self.model clearAll];
}
- (IBAction)clearDisplay:(id)sender {
[self.model clearDisplay];
}
- (IBAction)clearMemory:(id)sender {
[self.model clearMemory];
}
- (IBAction)storeMemory:(id)sender {
[self.model storeMemory];
}
- (IBAction)addMemory:(id)sender {
[self.model addMemory];
}
- (IBAction) subtractMemory:(id)sender {
[self.model subtractFromMemory];
}
- (IBAction)recallMemory:(id)sender {
[self.model recallMemory];
}
これまでのところ、Objective-Cはメッセージを動的に転送することで非常に柔軟に見えます。これらの方法は、かなり簡単に自動化されているように見えるのに十分似ています。彼らは本当にそこにいる必要がありますか?または、特定のメッセージをモデルに渡すようにコントローラーに指示する繰り返しの少ない方法がありますか(理想的には、sender
引数を取り除いている間)?
私は少し調べてセレクターとを使っていくつかのことを試してきましたが、ボタンをアクションに接続するためのすべてのマーカーNSInvocation
を取り除くことで、InterfaceBuilderを台無しにするようです。(IBAction)
(これらの場合、ビューがコントローラーがモデルに転送していることを認識または気にする必要がない場合は、この方法をお勧めします。)
それで、より反復的および/またはハッキーな方法はありますか?それとも、トラブルの価値はありませんか?(または、そもそもそれは悪い考えですか?それとも、これはモデルにやりすぎをさせようとしているのですか?または...)