如何使用可选的方法创建协议?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我注意到在iPhoneSDK中定义的几个协议中标记为可选的方法,例如UIActionSheetDelegate例如协议。

如何定义自己的协议,并将其中一些方法设置为可选方法?

提问于
用户回答回答于

@protocol MyProtocol

- (void)requiredMethod;

@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;

@required
- (void)anotherRequiredMethod;

@end
用户回答回答于

如果协议中的方法标记为可选方法,则必须在尝试调用该方法之前检查对象是否实现该方法。

例如,饼图视图可能会测试段标题方法,如下所示:

NSString *thisSegmentTitle;
if ([self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
    thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
}

respondsToSelector:方法使用选择器,该选择器引用编译后的方法的标识符。您可以使用@selector()指令并指定方法的名称来提供正确的标识符。

如果本例中的数据源实现了该方法,则将使用标题;否则,标题将保持为零。

扫码关注云+社区