1

このようなことを行う方法はありますか (以下は機能しません):

@protocol ElementPicker <UIViewController>

- (id)initWithFile:(NSFileWrapper *)file andInfo:(NSString *)info;

@property (nonatomic, weak) NSObject<ElementPickerDelegate> *delegate;
@end

「ElementPicker」を実装するオブジェクトはUIViewController?から継承する必要があります。

4

2 に答える 2

7

いいえ。プロトコルは他のプロトコルを拡張することしかできません。最も近い方法は、変数、プロパティ、またはパラメーターを、プロトコルUIViewControllerにも準拠するものとして定義することです。ElementPickerこのようなもの:

- (void)someMethod:(UIViewController<ElementPicker> *)controller {
}

補足 - デリゲートをidではなくとして定義するのが一般的NSObjectです。そのような:

@property (nonatomic, weak) id<ElementPickerDelegate> delegate;
于 2012-11-22T23:16:21.987 に答える
1

プロトコルで である必要はないと思いますがUIViewController、デリゲートを である必要があるように設定することで、これを簡単に実現できますUIViewController

@property (nonatomic, weak) UIViewController<ElementPickerDelegate> *delegate;

于 2012-11-23T01:43:41.007 に答える