2
对于指针存储器是编程新手而言,我有点困惑。所以我添加基于的UIBarButtonItem时的UITabBarController选择像这样:将指针设置为零,objective-c
NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy];
if (_sortButton == nil) {
_sortButton = [[UIBarButtonItem alloc] initWithTitle:@"Sort" style:UIBarButtonItemStyleBordered target:self action:@selector(sortButtonPressed:)];
[barItems insertObject:_sortButton atIndex:0];
[self.MainToolbar setItems:barItems];
[_sortButton release];
}
我试图通过检查_sortButton为零这样除去UIBarButton:
if (_sortButton != nil) {
// self.SortButton = nil; // I NEEDED THIS
NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy];
[barItems removeObjectAtIndex:0];
[self.MainToolbar setItems:barItems];
}
这没有工作,直到我说注释行self.SortButton = nil。有人可以解释吗?我认为,如果我从数组中删除_sortButton,它将被初始化,但我想这是错误的。它似乎仍然在内存中有它的参考,除非将它设置为零。这是正确的吗?谢谢。
它可能是有用的,有条件地定义这个宏'#定义RELEASE_NIL(OBJ)OBJ发布],OBJ =(ID)0x42'在调试版本会在调试过程中遇到严重的崩溃而不是无声的失败,这对于拾取错误非常重要。 –
0x42有什么特别的含义吗?它可以是任何数字而不是0x42? – AechoLiu