Could you explain in simple terms in what situations synthesize is needed? As I understand it, it makes it possible to access properties through get- and set-. It turns out that a property without synthesize is no different from a class variable? And does it make sense then to write songs without synthesize?
Properties (property) appeared in Objective-C only in version 2.0, and they are reduced to ordinary methods (or messages, if you like). That is, if you declare a property
@property (nonatomic, retain) NSString* property1;
then you are actually declaring a getter and setter like this:
When you use property
NSString* p = v.property1; v.property1 = p;
in fact, the compiler "expands" this into code like this:
NSString* p = [v property1]; [v setProperty1:p];
@synthesize property1; expands into code definitions for the setter and getter (according to the parameters you provided in the property declaration). You don't have to write
@synthesize , but in that case you have to write the getter and setter implementations yourself. If you do neither, the compiler will issue a warning and code that uses the property will crash.
@property expands into setter and getter declarations , it must be written in the class interface (usually in a header file – .h). Similarly,
@synthesize "generates" setter and getter implementations , so it is used in the implementation file (.m, .mm).