Objective C方法和语法

时间:2011-12-04 12:08:11

标签: iphone objective-c c methods

使用objective-c时我有点困惑。这部分特别让我感到困惑。

编写像这样的代码之间的目的和/或区别是什么......

object = [object method];

[object method];

到目前为止学习目标-c,我一直认为我可以做这样的事情......

说我已经创造了这个..

NSString *object = [[NSString alloc]initWithFormat:@"%@"];
然后我就可以做到我想要的那样......

[object applyAnyMethodHere];

但现在我看到这样的事情......

object = [object applyAnyMethodHere];

这两者有什么区别?

2 个答案:

答案 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];的示例只是一个更复杂的版本。