我知道我可以使用类别扩展一个类(例如框架类),但是是否可以让一个您不控制其源代码的类实现您的自定义协议(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/