簡體   English   中英

*** -[UIImage 保留]:發送到已釋放實例的消息

[英]*** -[UIImage retain]: message sent to deallocated instance

我的應用程序中出現了一個非常奇怪的 memory 管理問題。 我有一個 UISplitViewController appps,其中 RootViewController 是一個 UITabBarApplication。 錯誤:

*** -[UIImage retain]: message sent to deallocated instance 0x555960

當我嘗試通過點擊標簽欄按鈕來切換視圖時,總是會發生這種情況。 我在按鈕上有三個標簽欄按鈕。 我也沒有對 UIImage 的任何調用保留在我的代碼中的任何位置。

有人對如何調試有任何提示嗎? 我不知道如何具體重現這一點,我所知道的是,當我在選項卡之間切換時有時會發生這種情況。

調試器在以下位置中斷:

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, @"CVore", nil);
    [pool release];
    return retVal;
}

在此處輸入圖像描述

更新:我收到了 memory 警告。 Level=1 然后當我切換標簽時,它給了我那個錯誤。

您是否嘗試過在代碼上使用分析器 不能保證,但它可能會有所幫助。

Received memory warning. Level=1

通常意味着您的代碼正在泄漏 memory。 從您提供的代碼中,無法判斷出什么問題。 向我們提供更多代碼,或者觀看WWDC 2010 Session 311 - 高級 Memory 分析儀器,這將幫助您自行查找錯誤。

聽起來您正在發布尚未保留的自動發布 object。 稍后,當自動釋放池耗盡/釋放時,會向該(現在無效)object 發送 -release 消息,從而導致異常。

一個好的開始是打開 NSZombieEnabled以便您更好地了解 object 所涉及的內容。 然后看一下 object 是如何創建的。 由於當您收到 memory 警告時似乎發生了異常,請查看在這種情況下會發生什么。 您可能有一個 -viewDidUnload 方法錯誤地釋放了 object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM