objective-c - 是否可以在 Objective-C 中动态实现协议(protocol)?

标签 objective-c ios dynamic protocols

我知道我可以使用类别扩展一个类(例如框架类),但是是否可以让一个您不控制其源代码的类实现您的自定义协议(protocol)之一?我不仅希望它在发送到实例时响应某些消息,而且理想情况下,还希望该类的对象在查询协议(protocol)时在运行时类型检查中返回 true。

最佳答案

你可以定义一个符合协议(protocol)的类别,所以你会做这样的事情:

@interface UIWebView (MyGreatExtensions) <UITableViewDelegate>
@end

@implementation UIWebView (MyGreatExtensions)

- (CGFloat)tableView: (UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath {
  return 42.0;
}

// ...

@end

要考虑的一个小边缘情况是,如果其他人尝试做同样的事情(例如,第三方框架也通过类别添加协议(protocol)),那么您不能保证< em>您的版本将被使用(当然他们也不能)。

关于此方法的更多信息 from Mark Dalrymple .

关于objective-c - 是否可以在 Objective-C 中动态实现协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347266/

相关文章:

iphone - 在 iPhone 应用程序中使用 PayPal 实现简单支付?

objective-c - 傻瓜协议(protocol)和委托(delegate)

objective-c - 如何在多个类中使用 C 风格结构

java - Java中从用户处获取类的对象名称

c - 如何在启动时将数组放置在特定地址

javascript - 将 jsPlumb 与动态内容结合使用

ios - 对象 : ARC releasing dynamically created view controller too early

ios - SCNetworkReachability 是否遵守 HTTP 代理设置?

ios - 触摸时 Sprite 不可见

ios - 更改 Segue 时选项卡栏消失