-1

某些基础类,例如 NSString 或 NSArray 有实例方法,可以对那个实例做一些事情,但从不要求给那个实例。例如:

NSArray *array = @[@"hi"];

int number = [数组计数];

count 方法知道要计算哪个数组而不要求提供一个。你是怎么做到的?我希望使用 incrementByOne 实例方法在 NSString 上创建一个类别。我不想在方法 deceleration 中询问字符串,我想知道我正在对哪个对象执行操作,就像 count 知道要处理哪个数组一样。如果有人可以帮助我,我将不胜感激。

4

1 回答 1

0

在您的示例中:

[array count];

您正在将count消息发送到名为 的实例array。消息发送到的实例由该array表达式的部分确定。在方法定义中,您正在操作的实例由 引用self。在您的incrementByOne示例中,实例方法可能会执行类似的操作

- (NSInteger)incrementByOne
{
    return [self length] + 1;
}

该名称self将引用该消息发送到的任何实例。

于 2013-09-12T01:53:03.447 回答