使用objective-c时我有点困惑。这部分特别让我感到困惑。
编写像这样的代码之间的目的和/或区别是什么......
object = [object method];
和
[object method];
到目前为止学习目标-c,我一直认为我可以做这样的事情......
说我已经创造了这个..
NSString *object = [[NSString alloc]initWithFormat:@"%@"];
然后我就可以做到我想要的那样......
[object applyAnyMethodHere];
但现在我看到这样的事情......
object = [object applyAnyMethodHere];
这两者有什么区别?
答案 0 :(得分:3)
第一个(object = [object method];
)是对返回的任何方法的赋值。
第二个([object method];
)只是调用方法而不注意其返回值(如果有的话)。
第三个(NSString *object = [[NSString alloc]initWithFormat:@"@"]
)声明变量,并为initWithFormat
类方法的返回值分配调用的alloc
方法的返回值。
答案 1 :(得分:0)
在许多编程语言中,object = [object method];
是所谓的“赋值”语句。考虑一下:
x = y + z;
计算机从右到左读取该语句表示:
计算变量y和z的总和,然后将其存储在名为x。
的变量中
表达式右侧的内容与整个语句中实际发生的内容无关。在您的示例中,计算机将:
告诉名为“object”的对象执行“method”并将结果存储回“object”。
但是,您并不总是希望存储方法调用的结果。例如,如果要显示警报视图,可以直接调用:
[myalertView show];
请注意,没有任何转让。除非您想存储方法调用返回的值,否则不需要赋值。
另外,请考虑一下:
NSInteger x = 5;
没有方法调用,但有一个赋值。您object = [object method];
的示例只是一个更复杂的版本。