Как получить доступ к объекту, для которого был вызван метод категории?
Я использую @implementation
добавить новую функцию в UIView
,
@implementation UIView (test)
- (void)newFunction {
}
@end
Теперь в newFunction
Я хочу "схватить" объект (UIView
), который был использован при вызове функции.
Например, когда я звоню newFunction
в viewDidLoad
- (void)viewDidLoad {
[myView newFunction];
}
Я хочу newFunction
знать, какой объект был использован для вызова (в данном случае myView
).
Простым решением было бы передать его при звонке ([myView newFunction:myView]
), но это не то, что я ищу.
Я просмотрел документацию Apple по этому вопросу, но так и не нашел ответа на свой вопрос.
2 ответа
То, что вы описываете, называется категорией (не @implementation). Это расширение к UIView
класс (в данном случае).
Generalcally:
@implementation __CLASS_TO_EXTEND__ (__CATEGORY_NAME__)
Категория, как и расширение, является экземпляром, для которого вы вызываете метод. Итак, вы используете self
как обычно, чтобы получить доступ к текущему экземпляру.
#import "UIView+UIView_Category.h"
@implementation UIView (UIView_Category)
- (void)newFunction
{
NSLog(@"Object = %@",self);
}
@end