在类中指定自己的委托,在Interface Builder中进行类型检查

时间:2012-01-09 22:53:56

标签: objective-c delegates interface-builder typechecking

我写了一个需要通知另一个类的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从哪些实例可以设置为委托的信息。

1 个答案:

答案 0 :(得分:2)

这通常有效:

- (void)setDelegate:(id<glob_protocol>)inDelegate
{
  if (inDelegate) {
    assert([inDelegate conformsToProtocol:@protocol(glob_protocol)]);
  }
  ...
}

虽然这不是您想要的级别/阶段,但它很有效,因为连接不会经常更改。