私は、プログラミングに新しいポインタメモリについて少し混乱しています。だから私はUITabBarControllerがそうのように選択されたときに基づいてUIBarButtonItemを追加します。ポインタをnil、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はこのようなnilであるかどうかをチェックすることによって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を削除すると、初期化されていないことが考えられますが、間違っていると思います。それはあなたがそれをnilに設定しない限り、メモリ内の参照をまだ持っているようです。それは正しいですか?ありがとう。
、OBJで=(ID)0x42':ここ
は便利になるはずであるマクロですデバッグビルドでは、サイレントエラーではなくデバッグ中にハードクラッシュが発生します。これはバグの検出に非常に役立ちます。 –
0x42には特別な意味がありますか? 0x42の代わりに任意の数にすることはできますか? – AechoLiu