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