我已將UIView作爲工具欄進行子類化,並將各種按鈕和其他視圖添加到類中。現在,在我的ViewController頭我有這樣的:調用釋放方法崩潰iOS應用程序
@interface GridViewController : UIViewController <UIWebViewDelegate, UIScrollViewDelegate> {
Toolbar *toolbar;
}
@property (retain) Toolbar *toolbar;
,並在執行我有這樣的:
@synthesize toolbar;
- (void)viewDidLoad {
[super viewDidLoad];
CGRect toolbarRect = CGRectMake(0, 0, 1024, 40);
self.toolbar = [[Toolbar alloc] initWithFrame:toolbarRect];
[self.view addSubview:toolbar];
}
- (void) dealloc {
[toolbar release];
[super dealloc];
}
現在,如果我運行分析,它基本上是說,我有一個潛在的內存泄漏。如果我添加[工具欄釋放];在調用addSubView:工具欄後,像我通常在添加子視圖時一樣,當我彈出ViewController時,應用程序崩潰。
我在做什麼錯?我試過閱讀所有關於內存管理的知識,並且根據這些,你總是必須釋放/自動釋放你分配/複製/保留的東西等。如果我看看我的代碼,我在頭文件中保留了實例變量,還在實現中分配它,所以保留計數應該是+2,因此我需要釋放它兩次,但似乎我誤解了一些東西。很感謝任何形式的幫助。
當我說一聲,我得到這個:Xcode的暫停,並說EXC_BAD_ACCESS此行的main.m
int retVal = UIApplicationMain(argc, argv, nil, nil);
,並在控制檯中我得到這個:
modifying layer that is being finalized - 0x60895f0
對於引用計數應爲+3。一個用於alloc,另一個用於保留self.property,另一個保留在addSubview中。你說當你在addSubview之後添加release語句時它在pop中崩潰,你能發佈這個錯誤的堆棧跟蹤嗎? – Saran
將問題信息添加到問題中。 – margusholland
如何在殭屍樂器下運行你的應用程序?這將幫助您識別您正在訪問的對象,該對象已經發布。 – Saran