说我有:
@interface Test : NSObject {
NSString *string1;
}
@property (nonatomic,retain) NSString *string1;
@end
实现:
@implementation Test
@synthetize property1;
-(id) init {
if (self=[super init]) {
NSString *temp = @"testing";
string1 = [NSString stringWithString:temp];
}
return self;
}
我是否需要在dealloc方法中释放string1?
答案 0 :(得分:4)
是的,您还需要使用访问者方法在-init
中设置它:
self.string1 = [NSString stringWithString:temp];
如果您直接访问ivar,就像在问题中所做的那样,该属性的新值未得到正确保留。
(编辑)或者,如果像某些人一样,您宁愿避免在-init
中使用访问者方法,则需要手动-retain
值:
string1 = [[NSString stringWithString:temp] retain];