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

我不认为协议可以要求它是 a UIViewController,但是您可以通过设置要求委托是 a 来轻松实现这一点UIViewController

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

于 2012-11-23T01:43:41.007 回答