Перегруженный метод в категории obj-c: как передать его в исходный класс? - PullRequest
1 голос
/ 09 декабря 2011

Как я знаю, в моем перегруженном методе (в категории) я могу вызвать [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?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы добавляете категорию, а не подкласс.Добавляя категорию, думайте об этом как о прикреплении собственных методов к существующему классу.Вместо отправки сообщений на super (в данном случае NSObject), просто отправьте их на self.Представьте, что вы находитесь в реализации класса, к которому вы добавляете категорию.

Я не уверен, считаете ли вы, что у вас есть подклассы или вы пытаетесь охладить ...

1 голос
/ 09 декабря 2011

Если я правильно помню, введение в программирование ObjC в документации упоминает, что при переопределении метода категорией вы больше не можете получить доступ к исходному методу.

Ваш вопрос в значительной степени идентичен приведенному здесь: Как вызвать исходную функцию из перегруженной функции в категории?

Обратите внимание на цитату из документов в первом ответе

...