有什么办法可以做这样的事情(下面是行不通的):

@protocol ElementPicker <UIViewController>

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

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


这样实现“ ElementPicker”的对象必须从UIViewController继承吗?

最佳答案

不能。协议只能扩展其他协议。您可以做的最接近的事情是将变量,属性或参数定义为也是UIViewController协议的ElementPicker。像这样:

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


旁注-通常将委托定义为id,而不是NSObject。如:

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

关于objective-c - 有没有办法只允许UIViewControllers遵守协议(protocol)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13521166/

10-08 23:11