Как получить доступ к объекту, для которого был вызван метод категории?

Я использую @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
Другие вопросы по тегам