我正在编写一本关于Cocoa和Objective-C的书。在嵌套方法调用的示例中:
[NSString stringWithFormat:[prefs format]];
我假设prefs是嵌套方法调用格式的返回类型...这是正确的吗?
谢谢,
斯科特
答案 0 :(得分:5)
不,在这种情况下,prefs将是一个对象的实例。返回类型将是NSString *,因为这是stringWithFormat:所采用的。如果它是更广泛的例子的一部分,那么寻找'prefs'对象的声明。如果它只是一次性线,那么你现在必须相信我。请放心:[对象消息]始终将该消息发送给该对象。返回类型由消息声明定义,如果无法找到声明,则假定为'id'。
顺便说一下,这不是一个特别安全的代码。如果[prefs format]的结果包含任何格式化字符,那么NSString将尝试访问调用堆栈中不存在的内容。
答案 1 :(得分:3)
不,返回类型仅显示在函数声明中。 Prefs是正在调用其方法的对象的名称(或者是Obj-C中的接收者)。在Java类型语法中,该行看起来像
NSString.stringWithFormat(prefs.format());