@propery已保留,我应该发布吗?

时间:2011-06-28 18:31:52

标签: objective-c

说我有:

@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?

1 个答案:

答案 0 :(得分:4)

是的,您需要使用访问者方法在-init中设置它:

self.string1 = [NSString stringWithString:temp];

如果您直接访问ivar,就像在问题中所做的那样,该属性的新值未得到正确保留。

编辑)或者,如果像某些人一样,您宁愿避免在-init中使用访问者方法,则需要手动-retain值:

string1 = [[NSString stringWithString:temp] retain];