我知道我可以使用类别扩展类(例如框架类),但是是否有可能拥有一个您不控制源代码的类来实现您的自定义协议之一?我不仅要让它响应发送到实例的某些消息,而且理想情况下还希望该类的对象在查询协议时在运行时类型检查时返回true。
最佳答案
您可以定义一个符合协议的类别,因此您可以执行以下操作:
@interface UIWebView (MyGreatExtensions) <UITableViewDelegate>
@end
@implementation UIWebView (MyGreatExtensions)
- (CGFloat)tableView: (UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath {
return 42.0;
}
// ...
@end
需要考虑的一个小巧的情况是,如果其他人尝试做同样的事情(例如,第三方框架也通过类别添加了协议),则您不能保证将使用您的版本(当然,也不能他们)。
有关此方法的更多信息from Mark Dalrymple。