0

模型 1

NSString *name = (NSString *)[response valueForKey:@"name"];
[someObject doSomethingWith:name];

模型 2

[someObject doSomethingWith:((NSString *)[response valueForKey:@"name"])];

如果我选择模型 2 将保存在堆栈上创建的变量还是在他的场景后面创建的隐式临时变量?

忽略可读性的损失,避免创建仅在地方使用的变量有什么好处。而是像模型 2 中那样直接传递它?

4

1 回答 1

3

编译器生成的代码将是相同的,但是在第二种情况下没有变量。变量是一个高级编程概念,生成的汇编代码只知道寄存器和内存。在这两种情况下,最里面的方法调用的返回值都需要存储在某个地方,因此将使用寄存器或堆栈上的位置。

此外,id- [NSDictionary valueForKey:]返回的内容)是通用的,并且与任何对象指针类型隐式兼容 - 请不要将其返回值转换为NSString *.

于 2013-03-29T05:57:25.720 回答