如何访问调用类别方法的对象?

时间:2014-04-26 13:06:00

标签: ios objective-c objective-c-category

我使用@implementationUIView添加新功能。

@implementation UIView (test)
    - (void)newFunction {

    }
@end

现在,在newFunction我想要"抓住"调用函数时使用的对象(UIView)。

例如,当我在newFunction

中呼叫viewDidLoad
- (void)viewDidLoad {
    [myView newFunction];
}

我希望newFunction知道用于调用的对象(在本例中为myView)。

一个简单的解决方案是在拨打电话时传递它([myView newFunction:myView]),但这是我正在寻找的。

我看了Apple's documentation on the subject,但没有真正找到我的问题的答案。

2 个答案:

答案 0 :(得分:2)

#import "UIView+UIView_Category.h"

@implementation UIView (UIView_Category)
- (void)newFunction
{
    NSLog(@"Object = %@",self);
}
@end

答案 1 :(得分:1)

您描述的内容称为类别(不是@implementation)。它是UIView类的扩展(在本例中)。

Generalcally:

@implementation __CLASS_TO_EXTEND__ (__CATEGORY_NAME__)

类别,因为它是扩展名,您调用方法的实例。因此,您通常会使用self来访问当前实例。