1
votes

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.

3

3 Answers

6
votes

@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.

3
votes

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.

0
votes

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.