0

来自 Apple 的 Obj-C 文档:

如果方法返回一个对象,则发送给 nil 的消息返回 0(nil)。例如:

   Person *motherInLaw = [[aPerson spouse] mother]; 

如果此处的配偶对象为nil,则将mother 发送到nil,并且该方法返回nil。

所以spouse这里可以是一个对象?如果它是一个对象,它必须是一个选择器吗?

4

2 回答 2

0

选择器就像 C++ 类中的类方法,它是您调用的方法的名称,您可以定义它将接受的参数的数量和类型。它根本不是一个对象。在上面的示例中,“配偶”是您调用的方法名称。它永远不是一个对象。

编辑:

编码

Person *motherInLaw = [[aPerson spouse] mother];

可以扩展为:

Person *theSpouse = [aPerson spouse];
Person *motherInLaw = [theSpouse mother];

如您所见,在“配偶”方法的返回值上调用了“母亲”方法。这应该可以消除任何混淆。

于 2012-06-16T03:37:10.853 回答
0

该文件实际上是正确的。这只是objective-c的语法。实际上,在这个实例中,aPerson 正在为配偶调用 getter 方法。如果在调用时没有设置配偶,它将返回 nil,此时将母亲的 getter 方法发送给配偶会导致对 nil 的方法调用。

你看到的确实是一个方法——只是一个返回类型对象的方法,我上面的海报已经描述了选择器是什么。

于 2012-06-16T04:12:06.280 回答