为什么我们不在初始化方法中使用该属性并使用实例变量?
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;
}
答案 0 :(得分:2)
正确的方法是
_someString = [[NSString alloc] initWithFormat:@"%@ %@",@”Mike”, @”Jones”];
没有autorelease
。我假设您的属性为retain
或(更好)copy
。
你不想在init和dealloc中调用方法,因为它们很容易产生副作用,无论是在这里(现在还是以后)还是在子类中。