这可能不对......或者可能是。我正在查看名为ShareKit的源代码,由一些名叫Nathan的人编写,我注意到他自动发布了一个视图,后来在dealloc中,他发布了。
答案 0 :(得分:1)
不确定为什么你认为这是错误的。例如,这是完全有效的代码,它表现出与您所看到的相同的东西:
@interface SomeClass : NSObject
@property (nonatomic, retain) NSNumber *someNumber;
@end
@implementation SomeClass
@synthesize someNumber;
- (id)init {
if ((self = [super init]])) {
self.someNumber = [[[NSNumber alloc] initWithInt:5] autorelease]; // retain count = 1 (alloc) - 1 (on next drain) + 1 (retaining property) = 1
}
}
- (void)dealloc {
[someNumber release]; // retain count = 0
[super dealloc];
}
@end
release
之后autorelease
发生了什么问题。
另一部分有效的代码(虽然完全没有意义!):
NSNumber *someNumber = [[NSNumber alloc] initWithInt:5]; // retain count = 1
[someNumber retain]; // retain count = 2
[someNumber autorelease]; // retain count = 2 (-1 on next drain) = 1
[someNumber release]; // retain count = 1 (-1 on next drain) = 0
答案 1 :(得分:0)
不,没有; 自动释放池只会为它上面列出的每个实例调用一个版本。