1

我想这是一个非常基本的问题,但我正在从 Nick Kuh 的“Foundation iPhone App Development”一书中做一个教程,我不完全理解这一行:

int count = [自我计数];

...真的以“自我”开始?

这是整个代码:

#import "NSMutableArray+Shuffle.h"

@implementation NSMutableArray (Shuffle)

- (void)shuffle {

int count = [self count];

NSMutableArray *dupeArr = [self mutableCopy];
count = [dupeArr count];
[self removeAllObjects];

for (int i = 0; i < count; i++) {

    // Select a random element between i and the end of the array to swap with.
    int nElement = count - i;
    int n = (arc4random() % nElement);
    [self addObject:dupeArr[n]];
    [dupeArr removeObjectAtIndex:n];

}

}

@end
4

2 回答 2

5

由于您属于 NSMutableArray 的一个类别,因此 self 指的是 NSMutableArray 的一个实例。然后 count 是 NSMutableArray 的一个属性,它返回数组包含的对象的数量。所以有问题的行说获取当前 NSMutableArray 实例中的项目数,并将其存储在一个名为“count”的 int 类型的变量中。

int count = [self count];

这也可以写成如下,同时在语法上保持有效。

int count = self.count;
于 2013-08-09T19:45:24.873 回答
3

它自己调用“计数”方法。语法可能会让您失望,就像您第一次看到 Objective-C 时的情况一样。在 Java 中,它看起来像这样:

int count = this.count();
于 2013-08-09T19:45:34.573 回答