What's the difference between using obj-c accessors and using dot syntax?

雨燕双飞 提交于 2019-11-28 11:40:09

问题


Since I've started on iPhone development I've been kinda confused as to which is the best way to access data as a member in a Class.

Let's say I have a class called MyClass, and in it I have:

@interface MyClass : NSObject {
    int myInt;
}

@property (nonatomic, assign) int myInt;

In the implementation, is it better to do this:

myObject.myInt = 1;

Or this?

[myObject setMyInt:1];

This goes for reading the value too.

int newInt = myObject.myInt;

vs.

int newInt = [myObject myInt];

回答1:


It doesn't really matter, they are the same thing. The dot syntax is a convenience that's there for you to use, and I feel like it makes your code cleaner.

The one case where I find that using the dot syntax throws warning or errors from the compiler is if you have have an id object, even if you know it has that property.

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



回答2:


The type of the object is statically checked with the . syntax, but not with the [] syntax. This means you can't use . if the object's type isn't specified, and that it is beneficial to use it when it is, so the compiler will help you more.




回答3:


Dot syntax in Objective-C is essentially shorthand for using the accessor methods. The message is still sent via the accessor method. Hope that answers your question



来源:https://stackoverflow.com/questions/1258360/whats-the-difference-between-using-obj-c-accessors-and-using-dot-syntax

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!