【问题标题】:What's the difference between using obj-c accessors and using dot syntax?使用 obj-c 访问器和使用点语法有什么区别?
【发布时间】:2009-08-11 03:35:26
【问题描述】:

自从我开始 iPhone 开发以来,我一直有点困惑,不知道哪个是作为班级成员访问数据的最佳方式。

假设我有一个名为 MyClass 的类,其中有:

@interface MyClass : NSObject {
    int myInt;
}

@property (nonatomic, assign) int myInt;

在实现中,这样做是不是更好:

myObject.myInt = 1;

还是这个?

[myObject setMyInt:1];

这也适用于读取值。

int newInt = myObject.myInt;

对比

int newInt = [myObject myInt];

【问题讨论】:

  • 几乎与 stackoverflow.com/questions/1249392 完全相同,仅在 2 天前询问。该问题的答案也比这里的答案更完整和更有帮助。最好在提问之前做一个更完整的搜索,但是 2 个问题总比 0 个问题好。 :-)

标签: objective-c iphone macos accessor


【解决方案1】:

没关系,它们是一样的。点语法很方便你使用,我觉得它让你的代码更干净。

我发现使用点语法会从编译器中引发警告或错误的一种情况是,如果您有一个 id 对象,即使您知道它具有该属性。

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5];
int aValue = 0;
aValue = someReturnedObject.value; // warning
aValue = [someReturnedObject value]; // will just do it

【讨论】:

    【解决方案2】:

    对象的类型使用 .语法,但不使用 [] 语法。这意味着您不能使用 .如果没有指定对象的类型,并且在指定时使用它是有益的,那么编译器会为您提供更多帮助。

    【讨论】:

      【解决方案3】:

      Objective-C 中的点语法本质上是使用访问器方法的简写。消息仍然通过访问器方法发送。希望能回答你的问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2014-02-16
        • 1970-01-01
        • 2014-09-03
        相关资源
        最近更新 更多