我正在阅读iOS 上的内存管理教程,我想问一些问题。本教程介绍了一个像这样实现的 setter 方法:
- (void)setCount:(NSNumber *)newCount {
[newCount retain];
[_count release];
// Make the new assignment.
_count = newCount;
}
和两种实现reset
方法。
方法1.我对这种方法的问题是这样的。在下面的代码中,可以看到
zero
分配给_count
(via setCount
)。但之后零被释放。_count
现在将指向哪里?它不会导致
_count
指向已释放对象的情况吗?(我只是从这些事情开始,所以我所说的当然可能不正确)。
- (void)reset {
NSNumber *zero = [[NSNumber alloc] initWithInteger:0];
[self setCount:zero];
[zero release];
}
方法2。
在这里我有兴趣zero
现在谁会发布?(它必须正确释放,因为它是使用 alloc 创建的)。会在dealloc中完成吗?
- (void)reset {
NSNumber *zero = [[NSNumber alloc] initWithInteger:0];
[_count release];
_count = zero;
}
谢谢。