In the earlier post we had a simple Car class with model and year variables. The Car interface had the declarations for model and year properties and the implementation had the setter/getter methods for these.
It’s pretty frustrating to hand-toss properties all the time. You can use the @property directive to declare the properties in the interface like shown below.
//Car.h
@interface Car : NSObject {
NSString* model;
int year;
}
@property NSString* model;
@property int year;
@end
In our implementation instead of defining the getter/setter for model and year you can use @synthesize directive that generates getter/setters.
//Car.m #import "Car.h" @implementation Car @synthesize model; @synthesize year; @end
The @synthesize directive generates a model/setModel and year/setYear methods. The ‘get’ prefix is ignored in the ‘getter’ methods generated. Also while invoking the model and year you can use the dot notation instead of using it like a method as shown below.
#import "Car.h"
int main (int argc, const char * argv[])
{
Car *car1 = [Car alloc];
car1.model = @"Cadillac";
car1.year = 2008;
NSLog(@"Model: %@, Year: %d",car1.model,car1.year);
}