Мне показалось, что я понял @property и @synthesize, но я немного поэкспериментировал и не могу понять, почему работает приведенный ниже (то, что я думал, что он не работает).
Как видите, естьнет переменной экземпляра, которая соответствует свойству name.Создает ли Objective-C переменную экземпляра, если не находит переменную экземпляра с тем же именем и типом?
Заголовок:
#import <Foundation/Foundation.h>
@interface AddressCard : NSObject {
}
@property (copy, nonatomic) NSString *name;
-(void) print;
@end
Реализация:
#import "AddressCard.h"
@implementation AddressCard
@synthesize name;
-(void) print {
NSLog(@"Name=%@", self.name);
}
-(void) dealloc {
[name release];
[super dealloc];
}
@end
Тест:
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
AddressCard *ac = [[AddressCard alloc] init];
ac.name = @"Brandon";
[ac print];
[ac release];
[pool drain];
return 0;
}