我正在使用 iPhone SDK 3.0,但我认为这是对 w/c 和内存管理如何工作的普遍误解。
我已经像这样覆盖了 viewWillAppear 方法
@implementation MyViewController
- (void)viewWillAppear:(BOOL)animated {
NSArray *items = [NSArray arrayWithOjbects:self.searchButton, self.trashCan, nil];
[self.bottomBar setItems:items animated:YES];
}
// other stuff...
@end
当我尝试从上面的视图控制器切换并切换回来时,一切正常。
但是,我倾向于“释放”指向“项目”的原始指针,因为我认为对 NSArray 的引用现在由 bottomBar 持有。但是当我这样做(见下面的代码)并尝试从 UIViewController 切换时,我得到一个内存管理错误(-[CFArray count]: message sent to deallocated instance 0xd5f530)。
- (void)viewWillAppear:(BOOL)animated {
NSArray *items = [NSArray arrayWithOjbects:self.searchButton, self.trashCan, nil];
[self.bottomBar setItems:items animated:YES];
[items release];
}
在这种情况下我是否需要不发布项目?还是我做错了什么?显然,经验证据表明我不应该发布“项目”,但我不清楚为什么会这样。
感谢您提供任何信息/“指针”!