【问题标题】:Dot Operator in Objective-C 2.0Objective-C 2.0 中的点运算符
【发布时间】:2010-10-11 09:34:22
【问题描述】:

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

“旧”方式:

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

“新”方式:

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

谢谢!

罗德里戈

【问题讨论】:

  • 他们为什么要对 Objective-C 那样做????

标签: ios objective-c cocoa cocoa-touch


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    当我对对象进行降序时使用点语法并使用括号来实际设置属性。

    像这样:

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

    代替:

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

    【讨论】:

      【解决方案3】:

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

      点属性语法与 KVC/KVO 中的键路径很好地结合在一起。在我看来,它比嵌套括号更整洁(而且我喜欢方案,所以我不反对括号嵌套!),并且在您访问属性而不是传递消息时使其明确 - 即使机制是一样。

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

      【讨论】:

        【解决方案4】:

        我会支持旧方法:

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

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

        【讨论】:

        • 我不确定我是否应该得到这个公认的答案。这确实是一个主观问题。我投票给安德鲁·格兰特 :)
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2012-07-27
          • 1970-01-01
          • 2012-12-04
          • 1970-01-01
          • 2012-11-07
          • 2013-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多