I am just learning OOP from a book I picked up (Big Nerd Ranch), and it just went through the getter and setter chapter. I would just like to clarify I understand what I have just done. Instead of creating a method to set the value of an instance, and then another method to extract the value and display it, I create use the @property and @synthesize syntax to define both methods.
Instead of doing this:
-(void) setHeightOfObject:(int)h;
-(void) setWeightOfObject:(float)w;
-(int) heightOfObject;
-(float) weightOfObject;
and defining it like this:
- (int)heightOfObject
{
return heightOfObject;
}
- (void)setHeightOfObject:(int)h
{
heightInMeters = h;
}
- (float)weightOfObject
{
return weightOfObject;
}
- (void)setWeightOfObject:(float)w
{
weightOfObject = w;
}
I would do this with getter and setters in the .h file:
@property int heightOfObject;
@property float weightOfObject;
And then go to my .m file and link it:
@synthesize heightInMeters, weightOfObject;
This then gives me the ability to set the value of my object, and then get it if I need it printed? I know this is an important concept and I want to make sure I have the proper grasp of it.
You are correct. The
@synthesizeessential expands out to the implementation you wrote while compiling.Since writing getters and setters is boring and repetitive (and most objects have a bunch of properties you’d want getters and setters for) having this little shortcut makes you spend less time on boilerplate code and more time implementing something interesting.
If you’d like more detailed information about objective-c’s properties, you can have a look at the programming guide (although this might be somewhat unnecessarily detailed for you at this point).