如何在方法本身中访问调用类别方法的数组?

How to access an array calling a category method within the method itself?

提问人:ObjCJon 提问时间:8/17/2023 最后编辑:mattObjCJon 更新时间:8/17/2023 访问量:30

问:

我是 Objective-C 的新手。我正在尝试为不使用参数的数组创建一个类别方法。我被告知有一种方法可以使该方法使用此数组而无需使用数组作为参数。我还没有看到这个问题的具体内容。谁能告诉我如何从类别方法中访问调用该方法的数组?

我知道使用参数有效。喜欢这个:

[array reversed:array];

我正在尝试这样做:

[array reversed];
Objective-C 方法

评论

1赞 matt 8/17/2023
你遇到了什么困难?
0赞 HangarRash 8/17/2023
请使用您的相关代码(以文本形式)更新您的问题。

答:

1赞 Rob Napier 8/17/2023 #1

在您的示例中,没有调用任何内容。它是消息传递到的对象。在方法中,传递方法的对象(在本例中)被调用,这就是您在类别或对象的任何方法中访问它的方式。arrayreversed-reversedarrayself

在您的示例中,它看起来像这样:

@interface NSArray (Reversed)
- (NSArray *)reversed;
@end

@implementation NSArray (Reversed)

- (NSArray *)reversed {
    NSMutableArray *result = [NSMutableArray new];

    // Here is where you refer to the target as `self`
    for (id element in [self reverseObjectEnumerator]) {
        [result addObject: element];
    }
    return result;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSArray *xs = @[@1, @2, @3];
        NSArray *reversed = [xs reversed];
        NSLog(@"%@ -> %@", xs, reversed);
    }
    return 0;
}