我是ObjectiveC的新手,并在Swift工作了几年。因此,我不明白Xcode中的以下解释错误:
类型参数不能应用于非类型类型“id”
我的协议:
@protocol ExampleProtocol<NSObject>
@required
-(NSString *)title;
-(NSString *)album;
@end
我在MyService.h文件中的实现:
@interface MyService : NSObject
@property (nonatomic, assign, readwrite) id<ExampleProtocol> delegate;
@end
错误发生在以下行中:
> @property (nonatomic, assign, readwrite) id<ExampleProtocol> delegate;
此外:
@class ExampleProtocol;
。也尝试过:
@objc
和: class
创建一个Swift协议,给出了相同的错误消息结果。清理构建文件夹(删除派生数据)
唯一可行的方法是将公共接口中的行删除到私有。这没有意义。我不想从另一个类设置委托,并创建一个设置私有委托的公共setter是一个丑陋的解决方法。
任何建议都会有所帮助。我想明白为什么会这样。在ObjectiveC中编写的项目中有很多其他协议可以正常工作。
答案 0 :(得分:1)
ExampleProtocol
是一个协议,而不是一个类。如果导入标题,则不需要它。如果您没有导入标题,则应为@protocol ExampleProtocol;