为什么我们不在初始化方法中使用该属性?使用实例变量

时间:2011-07-04 08:30:49

标签: iphone objective-c

为什么我们不在初始化方法中使用该属性并使用实例变量?

init {
    self = [super init];
    if (self) {
        self.someString = [[[NSString alloc] initWithFormat:@"%@ %@",@”Mike”, @”Jones”] autorelease];
    }
    return self;
}

VS

init {
    self = [super init];
    if (self) {
        _someString = [[[NSString alloc] initWithFormat:@"%@ %@",@”Mike”, @”Jones”] autorelease];
    }
    return self;
}

1 个答案:

答案 0 :(得分:2)

正确的方法是

_someString = [[NSString alloc] initWithFormat:@"%@ %@",@”Mike”, @”Jones”];

没有autorelease。我假设您的属性为retain或(更好)copy

你不想在init和dealloc中调用方法,因为它们很容易产生副作用,无论是在这里(现在还是以后)还是在子类中。