我正在尝试向 NSObject 的描述方法添加一个条件,其中任何响应可选协议(PrettyPrinter)中的方法的对象都将打印来自协议方法的结果,而不是普通的 NSObject 的描述。但是,如果作为打印机的对象没有响应协议,那么描述应该返回它正常的响应方式。
我目前这样做的尝试涉及在 NSObject 上编写一个类别,其中包含此协议和覆盖的描述方法。但是,我不知道有什么方法可以调用类别的未覆盖方法。
-(NSString*)description
{
if ([self respondsToSelector:@selector(prettyPrinter)]) {
return self.prettyPrinter;
}else{
// Would Like to return normal description if does not respond to selector. But
// can not call super description due to being a category instead of a subclass
return [super description];
}
}
任何关于我可以实现这一点的方法的想法都将不胜感激。谢谢!
更新:通过更多的搜索,这似乎可以通过一种叫做 swizzling 的东西来完成。然而,目前这方面的尝试尚未成功。任何关于使用 swizzling 来实现这一目标的技术建议也会有所帮助。