我收到一個分析器泄漏,但是這是我在別處沒有問題使用的相同代碼。我知道我使用的是alloc,因此我必須釋放,但我在dealloc中這樣做。Obj-C,在線分配的對象的潛在泄漏,UIBarButtonItem alloc
我在做什麼錯?
頭文件
@interface myViewController : UIViewController <UITableViewDataSource,
UITableViewDelegate> {
UIBarButtonItem *addButton;
}
@property (nonatomic, retain) UIBarButtonItem *addButton;
主文件:
@synthesize addButton;
- (void)viewDidLoad {
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];
addButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(btnNavAddPressed:)];
addButton.style = UIBarButtonItemStyleBordered;
[buttons addObject:addButton];
[tools setItems:buttons animated:NO];
[buttons release];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:tools];
addButton.enabled = FALSE;
- (void)dealloc {
[addButton release];
這些類型的問題是iOS開發人員最常見的障礙之一。當你獲得經驗時,它變得更容易/更自然。如果您使用的是xcode 4.2,我建議閱讀ARC(自動引用計數)上的文檔並將您的項目遷移到該文檔。它不會更改規則WRT內存管理,但它確實允許編譯器爲您執行幾乎所有的工作。 – XJones