我写了一个需要通知另一个类的Objective-C类,所以我为委托定义了一个协议:
@protocol glob_protocol <NSObject>
@required
- (IBAction) call:(int) val val2:(int) val2;
@end
在我班上,我有一个成员来存储代表:
IBOutlet id <glob_protocol> delegate;
在Interface Builder中连接类/实例时,现在没有类型检查。我可以将任何类作为代理连接。
有没有办法启用类型检查?我希望只有实现协议的类/实例才能设置为委托。
感谢任何提示, 托。
编辑: 我刚刚检查了UIKit的Header文件,看看是否有任何额外的信息或关键字,但我没有找到任何。我想知道InterfaceBuilder从哪些实例可以设置为委托的信息。
答案 0 :(得分:2)
这通常有效:
- (void)setDelegate:(id<glob_protocol>)inDelegate
{
if (inDelegate) {
assert([inDelegate conformsToProtocol:@protocol(glob_protocol)]);
}
...
}
虽然这不是您想要的级别/阶段,但它很有效,因为连接不会经常更改。