![](/img/trans.png)
[英]Thread 1: EXEC_BAD_ACCESS (code=1) when dismissing view controller with collection
[英]EXEC_BAD_ACCESS when Dismissing ModalViewController
我正在使用一個非常標准的配方在我的iPhone應用程序中展示ModalViewControllers,但是我遇到了一種情況,即配方被破壞了,我很困惑。 這是我(幾乎總是)設置演示文稿的方式:
MatcherViewController *controller = [[MatcherViewController alloc] initWithNibName:@"MatcherView" bundle:nil];
[controller setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[controller setDelegate:self];
[self presentModalViewController:controller animated:YES];
[controller release];
直到我將一件事添加到混合中,並且在呈現它之前,我已經向新的控制器對象發送了一條消息,這一直很好,就像這樣:
MatcherViewController *controller = [[MatcherViewController alloc] initWithNibName:@"MatcherView" bundle:nil];
[controller setPrimary:primaryIndex andSecondary:secondaryIndex];
[controller setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[controller setDelegate:self];
[self presentModalViewController:controller animated:YES];
[controller release];
在我關閉視圖控制器之前,添加此方法調用似乎是可行的...此時,應用程序因EXEC_BAD_ACCESS信號而崩潰。 如果刪除[controller release]
,我可以使它與額外的行一起使用,但是恐怕會導致泄漏。 有什么想法為什么要在演示之前向對象發送消息會導致這種情況? 有沒有更好的方法將簡單參數傳遞給ModalViewController?
感謝您抽出寶貴時間整理新手; p
在控制器的dealloc方法中,確保您沒有釋放過多的內容。
我會猜測primaryIndex
和secondaryIndex
是
不正確保留的對象
,因此它們依賴於保留它們才能生存的模式視圖。 當您釋放模式視圖時,它們會死掉,但隨后在代碼中的其他地方調用會導致崩潰。
如果它們是該類的保留屬性,請始終使用“ self.propertyName”構造訪問它們,以確保正確管理其保留計數。
以我的經驗,過分釋放形式的過早優化是當今Objective-C頭痛的主要原因。 老派的Objective-C編碼人員對泄漏感到疑慮,因為他們幾乎不可能在一天之內手動找到泄漏。 這就是為什么很多資源仍然非常重視防止泄漏的原因。 但是,使用現代分析工具,通常很難發現泄漏。
在最初的開發過程中,如有疑問,請不要發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.