如果我有一个用“分配”属性定义的变量,那么可以在dealloc方法中将它们设置为nil吗?

@property (nonatomic, assign) id test;

- (void)dealloc {
    self.test = nil;
}

最佳答案

最好直接释放ivar。如果子类覆盖属性的setter方法,则对象可能会泄漏,因为未调用setter。考虑:

@interface ClassA
@property (readwrite, retain) id anObject;
@end

@interface ClassB : ClassA
@end

@implementation ClassA
@synthesize anObject;

- (void)dealloc {
    self.anObject = nil;

    [super dealloc];
}
@end

@implementation ClassB
- (void)setAnObject: (id)anObject {
    // do nothing!
}
@end


ClassB实例将泄漏anObject

关于iphone - 将具有“分配”属性的对象设置为nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4741808/

10-10 08:58