2012-01-09 22 views
2

を型チェックを持ち、クラスで自身のデリゲートを指定し、私は別のクラスを通知する必要があるObjective-Cのクラスを書いたので、私は、デリゲートのプロトコルを定義した:私のクラスでは、Interface Builderで

@protocol glob_protocol <NSObject> 
    @required 
    - (IBAction) call:(int) val val2:(int) val2; 
@end 

私が持っています代理人を保存するメンバー:

IBOutlet id <glob_protocol> delegate; 

インターフェイスビルダーでクラス/インスタンスを接続するときに、今すぐタイプチェックがありません。任意のクラスをデリゲートとして接続できます。

タイプチェックを有効にする方法はありますか?私は、プロトコルを実装するクラス/インスタンスのみがデリゲートとして設定できることを願っています。

ヒントのおかげで、 Torsten。

EDIT: UIKitのヘッダーファイルをチェックして、追加の情報やキーワードがあるかどうかを確認しましたが、見つからなかっただけです。 InterfaceBuilderがどのインスタンスをデリゲートとして設定できるかという情報がどこから得られたのだろうか。

答えて

2

この通常動作します:

- (void)setDelegate:(id<glob_protocol>)inDelegate 
{ 
    if (inDelegate) { 
    assert([inDelegate conformsToProtocol:@protocol(glob_protocol)]); 
    } 
    ... 
} 

それはあなたが望むレベル/フェーズではありませんが、接続が頻繁に変更されませんので、それはうまく動作します。

+0

あなたの答えをありがとうが、それは私を助けません。コードでは、iは(もちろん)デリゲートがnilでないかどうかをチェックし、コールする前にプロトコルに準拠しているかどうかをチェックします。インスタンスがデリゲートとして設定できるかどうかをInterfaceBuilderに確認させることに興味があります。 –

+0

@トルステン私は問題とあなたが望むものを理解しました。私が知っている最も近い選択肢に答えました。なぜなら、現在あなたが望むもの(afaik)のためのサポート/ハックがないからです。 – justin

+0

よろしくお願いします。 InterfaceBuilderでチェックを有効にすることができない場合は、私が今持っているものに固執し、デリゲートの割り当てに注意してください。 –

関連する問題