基础类如何知道调用实例方法时要处理的实例?

时间:2013-09-12 01:39:52

标签: objective-c instance-methods

某些基础类(如NSString或NSArray)具有对该实例执行某些操作的实例方法,但从不要求将实例赋予该实例。例如:

NSArray * array = @ [@“hi”];

Int number = [array count];

count方法知道要计算哪个数组而不要求提供一个数组。怎么这样做?我正在寻找使用incrementByOne实例方法在NSString上创建一个类别。我不想在方法减速中要求字符串,我想知道我正在执行什么操作,就像count知道要处理哪个数组一样。如果有人能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:0)

在你的例子中:

[array count];

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

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

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