2013-08-29 10 views
8

私はタイプUIViewControllerSubclass : UIViewControllerのクラス構造を持っています。ここでUIViewControllerSubclassの唯一の機能は#import UIViewController+Category.hです。私がカテゴリにメソッドを追加した理由は、も作ることができるので、#import UIViewController+Category.hにもなります。私たち皆が知っているように、あなた自身を繰り返さないでください。Objective-Cでカテゴリ定義のメソッドをオーバーライドすることは安全ですか?

@interface UIViewController(Category) 
- (void) method1; 
- (void) method2; 
@end 

それがどのように安全であるUIViewControllerSubclassSubclass : UIViewControllerSubclassを作成するために、method1をオーバーライドします:

は今のUIViewController + Category.hは、構造を有していることを前提と?私はこれがObjective-Cのメッセージの受け渡しのためにうまくいくと考えていますが、何らかの理由で私の直感が私に間違っていると伝えています。

+1

Objective-Cは "duck typed"であることを覚えておく必要があります。あるクラスがメソッドをサポートしている場合、メソッドがクラスの.hファイルで定義されていなくても、(安全に)呼び出すことができます。 (コンパイラチェックを傍受する方法はあなた次第です) –

答えて

7

カテゴリがUIViewControllerに適用されているため、すべてが正常に動作するはずです。したがって、サブクラスを含むUIViewControllerのすべてのインスタンスがメソッドにアクセスできます。それについて不安はありません。それがどのようにカテゴリーが適用されることが意図されているかです。

+1

カテゴリメソッドがインスタンスメソッドとしてクラスに緊密に結合されていないため、安全でないと感じていると思います。 – paulrehkugler

関連する問題