Objective-C 2.0中的点运算符

时间:2009-03-04 22:41:04

标签: ios objective-c cocoa cocoa-touch

只需选择Objective-C 2.0并想知道使用点运算符访问属性而不是“旧”方式是否有任何优势。我的意思的简短例子。

“老”的方式:

 [myFraction setNumerator: 1];
 [myFraction setDenominator: 3];

“新”方式:

 myFraction.numerator = 1;
 myFraction.denominator = 3;

谢谢!

罗德里戈

5 个答案:

答案 0 :(得分:7)

唯一的区别是易于打字和可读性。其意见更具可读性因人而异:))

答案 1 :(得分:2)

我在下降对象时使用点语法并使用括号实际设置属性。

像这样:

[self.view setFrame:CGRectMake(0, 0, 320, 480)];

而不是:

[[self view] setFrame:CGRectMake(0, 0, 320, 480)];

答案 2 :(得分:2)

我实际上喜欢新语法 - 但也许是因为我是Python程序员。

点属性语法与KVC / KVO中的键路径很好地融合。它看起来比嵌套括号更贴近我的眼睛(我喜欢方案,所以我不反对括号嵌套!),并在访问属性时使其显式,而不是传递消息 - 即使机制是相同。

并且,我看到对象的属性访问(基本上)与访问struct或union的成员的操作相同,因此语法应该是相同的。

答案 3 :(得分:1)

我会以旧的方式争论:

方括号语法最明显的是你正在访问Objective-C对象的成员,而点语法表明你正在处理C结构(或联合)。

除此之外,这只是个人选择和更多/更少打字的问题。

答案 4 :(得分:0)

C ++和C#程序员在访问成员变量时可能会更自然地适应点运算符,因为它在这些语言中具有相似的用法。