在Objective-C中嵌套方法调用时,prefs是预定义的关键字吗?

时间:2010-10-18 21:26:05

标签: objective-c

我正在编写一本关于Cocoa和Objective-C的书。在嵌套方法调用的示例中:

[NSString stringWithFormat:[prefs format]];

我假设prefs是嵌套方法调用格式的返回类型...这是正确的吗?

谢谢,

斯科特

2 个答案:

答案 0 :(得分:5)

不,在这种情况下,prefs将是一个对象的实例。返回类型将是NSString *,因为这是stringWithFormat:所采用的。如果它是更广泛的例子的一部分,那么寻找'prefs'对象的声明。如果它只是一次性线,那么你现在必须相信我。请放心:[对象消息]始终将该消息发送给该对象。返回类型由消息声明定义,如果无法找到声明,则假定为'id'。

顺便说一下,这不是一个特别安全的代码。如果[prefs format]的结果包含任何格式化字符,那么NSString将尝试访问调用堆栈中不存在的内容。

答案 1 :(得分:3)

不,返回类型仅显示在函数声明中。 Prefs是正在调用其方法的对象的名称(或者是Obj-C中的接收者)。在Java类型语法中,该行看起来像

NSString.stringWithFormat(prefs.format());