【发布时间】:2011-05-29 13:01:18
【问题描述】:
我以为我理解了@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;
}
【问题讨论】:
标签: objective-c