【问题标题】:Objective C Methods and syntaxObjective C 方法和语法
【发布时间】:2012-01-12 14:17:01
【问题描述】:

在使用objective-c 时我有点困惑。这部分尤其让我很困惑。

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

object = [object method];

[object method];

学习objective-c到现在,我一直认为我可以做这样的事情..

说我已经创建了这个..

NSString *object = [[NSString alloc]initWithFormat:@"%@"];

然后我可以像这样做我想做的事..

[object applyAnyMethodHere];

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

object = [object applyAnyMethodHere];

这两者有什么区别?

【问题讨论】:

  • 欢迎来到 StackOverflow!为什么不选择一个用户名,阅读the FAQ,然后停留片刻?

标签: iphone objective-c c methods


【解决方案1】:

在许多编程语言中,object = [object method]; 是所谓的“赋值”语句。考虑:

x = y + z;

计算机从右到左读取语句的意思是:

计算变量 y 和 z 之和,然后将其存储在名为 x 的变量中。

表达式右侧的内容与整个语句中实际发生的事情无关紧要。在您的示例中,计算机将:

告诉名为“object”的对象执行“method”并将结果存储回“object”中。

但是,您并不总是希望存储方法调用的结果。例如,如果你想呈现一个警报视图,你可以简单地调用:

[myalertView show];

注意没有分配发生。不需要赋值,除非你想存储方法调用返回的值。

另外,考虑一下:

NSInteger x = 5;

没有方法调用,但是有赋值。您的object = [object method]; 示例只是一个更复杂的版本。

【讨论】:

    【解决方案2】:

    第一个 (object = [object method];) 是对任何方法返回的赋值。

    第二个([object method];)只是调用方法,而不注意它的返回值(如果有的话)。

    第三个(NSString *object = [[NSString alloc]initWithFormat:@"@"])声明变量,并在alloc类方法的返回值上调用initWithFormat方法的返回值。

    【讨论】:

    • 谢谢迈克尔。我想我唯一的问题是“NSString *object = [object method];”之间的区别是什么和“NSString *object; object = [object method];”如果有的话?
    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2015-02-02
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多