Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C:消息语法与点语法;什么';有什么区别?_Objective C_Syntax_Syntactic Sugar - Fatal编程技术网

Objective-C:消息语法与点语法;什么';有什么区别?

Objective-C:消息语法与点语法;什么';有什么区别?,objective-c,syntax,syntactic-sugar,Objective C,Syntax,Syntactic Sugar,如果我使用的是@syntheticfoo,以下内容之间的区别是什么: // message syntax [myObj setFoo:5]; [myObj foo]; 及 我喜欢点语法的一致性,但我不知道它是否在做我应该关心的事情 任何附加信息都会有很大帮助。使用点语法和使用消息语法在功能上没有区别 我发现使用消息语法与语言整体上更一致,点语法的实现只是为了方便使用它的语言的程序员(想到Java) 我所要求的是:无论你选择哪一个,都要与它保持一致请勿混合和匹配单个属性设置器!(多参数设置器显然

如果我使用的是
@syntheticfoo,以下内容之间的区别是什么:

// message syntax
[myObj setFoo:5];
[myObj foo];

我喜欢点语法的一致性,但我不知道它是否在做我应该关心的事情


任何附加信息都会有很大帮助。

使用点语法和使用消息语法在功能上没有区别

我发现使用消息语法与语言整体上更一致,点语法的实现只是为了方便使用它的语言的程序员(想到Java)

我所要求的是:无论你选择哪一个,都要与它保持一致请勿混合和匹配单个属性设置器!(多参数设置器显然是例外)。

它们是相同的

点语法用于表示对
@属性的访问,您也可以通过以下方式访问该属性:

[myObject setValue: [NSNumber numberWithIntValue:5] forKey:@"foo"];
[myObject valueForKey:@"foo"];

但本质上,这些电话是相同的。

同意。坚持这样或那样。我更喜欢使用点语法,因为它告诉我,我正在做的事情可能会保留或复制一个对象。我支持这种说法!但我也(尝试)使用点符号,这样当成员被定义为属性而不是方法时,我可以一目了然。“不要混合和匹配”是毫无意义的。如果您使用点符号设置所有属性,然后必须添加一个包含两个参数的setter,您该怎么办?@w.m则您别无选择,只能混合和匹配。这是严格用于设置单个属性的-这不适用于多参数设置器。我认为点语法是一个很大的错误。它污染了语法,使人困惑。
[myObject setValue: [NSNumber numberWithIntValue:5] forKey:@"foo"];
[myObject valueForKey:@"foo"];