1

カスタム クラスのプロトコルを定義したので、デリゲートを指定します。クラスはインスタンス化されず、そのクラス メソッドにのみ使用されます。ただし、デリゲート クラスはインスタンス化され、定数に割り当てられています。クラスをインスタンス化する場合、次のようにデリゲートを参照させます。

@property (weak) MyDelegateClass <MyProtocol> *delegate;

ただし、クラスをインスタンス化していないため、プロパティを指定できません。では、そのデリゲートを参照するにはどうすればよいでしょうか。ゲッターメソッド?このようなもの?セッターも定義する必要がありますか?

+ (<MyProtocol>MyDelegateClass *)delegate;

ここの構文は何ですか?

4

1 に答える 1

0
@interface NeverInstanciatedClass

+ (MyDelegateClass *) delegate;
+ setDelegate: (MyDelegateClass* <MyProtocol>) delegate;

@end

@implementation 

static MyDelegateClass <MyProtocol> *_delegate;

+ (MyDelegateClass *) delegate {
    return _delegate;
}

+ setDelegate: (MyDelegateClass* <MyProtocol>) delegate {
    _delegate = delegate;
}

@end

(ゼロから - コンパイルも構文チェックもなし)

ARC を使用しない場合は、メモリ管理を追加することをお勧めします。しかし、あなたが使用しているように、(weak)私はあなたがARCを使用していると仮定します.

プロトコルをまったく使用しない場合は、完全に修飾する必要はありませんMyDelegateClass* <MyProtocol>id <MyProtoco>すべきです。あなたがスニプレットでそれをしたので、私はそれをしました。プロトコルで宣言されているメソッドにアクセスする場合 (そして、メソッドのみにアクセスする必要があります)、それがどのタイプのオブジェクトであるかを知る必要さえありません。あなた (およびコンパイラ) が知る必要があるのは、それがプロトコルを実装していることだけです。

于 2013-03-30T00:36:53.550 に答える