据我所知,在我的重载方法(类别中)中,我可以调用[super method]
将其传递给原始类。
在我的情况下,我没有类的头文件,所以我写道:
@interface OriginalClass : NSObject
@end
@interface OriginalClass (overloadMethod)
-(void) method;
@end
@implementation OriginalClass (overloadMethod)
-(void) method
{
// some my code
[super method]; // here is warning that "NSObject may not respond to '-method'
}
@end
那么可以在没有头文件的情况下正确地将method
传递给OriginalClass
吗?也许最好看一下method_setImplementation
?
答案 0 :(得分:2)
您正在添加类别,而不是子类。添加类别时,请将其视为将现有方法添加到现有类中。不是向super
发送消息(在本例中为NSObject
),而是将消息发送到self
。想象一下,您正在为要添加类别的类实现。
我不确定你是否认为你是子类,或者你是否想要调侃......
答案 1 :(得分:1)
如果我没记错的话,文档中的ObjC编程简介提到,当您使用类别覆盖方法时,您将无法再访问原始方法。
您的问题与此处的问题完全相同:How do I call the original function from the overloaded function in a category?
请注意第一个答案中文档的引用