开发者

Objective-C 101: dot notation and object properties

开发者 https://www.devze.com 2022-12-08 15:34 出处:网络
I have a very basic question regarding properties in Objective-C. I can only access object\'s properties via开发者_运维知识库 dot notation (Obj.MyProp) if I @synthesize myProp. Is that correct?

I have a very basic question regarding properties in Objective-C.

I can only access object's properties via开发者_运维知识库 dot notation (Obj.MyProp) if I @synthesize myProp. Is that correct?

Would it be true to say that if I use my own setter method, I will no longer be able to refer to property in dot notation?

Basically I am looking for C# type of functionality where I can write my own custom getter/setter and yet provide an additional code which I need to execute when the property is set.


@property creates automatic message declarations, just like writing

(int)thing;
(void)setThing:(int)value;

@synthesize automatically creates the implementations, i.e.

(int)thing {
    return thing;
}
(void)setThing:(int)value {
    thing = value;
}

If you give a definition yourself, it overrides the @synthesized version. So as long as you name a method correctly, it will work, with or without @synthesize in there.

Dot notation works with either synthesized or custom method implementations.


This is not correct. You can still use dot-notation even if you write custom getters or setters provided of course that your getters and setters maintain the correct method naming for the property.


From the docs:

@synthesize

You use the @synthesize keyword to tell the compiler that it should synthesize the setter and/or getter methods for the property if you do not supply them within the @implementation block.

It only synthesizes if you haven't already written them. If you've written them, they don't get synthesized.

0

精彩评论

暂无评论...
验证码 换一张
取 消