Sof*_*mes 3 protocols dynamic objective-c ios
我知道我可以使用类扩展一个类(例如框架类),但是有可能有一个你不控制源代码的类实现你的一个自定义协议吗?我不仅希望在发送到实例时让它响应某些消息,而且理想情况下,在查询协议时,希望该类的对象在运行时类型检查时返回true.
小智 8
您可以定义符合协议的类别,因此您可以执行以下操作:
@interface UIWebView (MyGreatExtensions) <UITableViewDelegate>
@end
@implementation UIWebView (MyGreatExtensions)
- (CGFloat)tableView: (UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath {
return 42.0;
}
// ...
@end
Run Code Online (Sandbox Code Playgroud)
需要考虑的一个小问题是,如果其他人试图做同样的事情(例如第三方框架也通过类别添加协议)那么你不能保证你的版本将被使用(当然也不能他们).
更多关于Mark Dalrymple的这种方法.