簡體   English   中英

如何修復保留計數為+1的泄漏對象?

[英]How do I fix a leaked object with a retain count of +1?

以下代碼中有一個泄漏的對象。 我如何解決它? 我嘗試添加[apiViewController版本]; 但是當我分析應用程序時,我仍然得到:

在此處輸入圖片說明

 if (idx == 2) {
        NSLog(@"you touched menu 2");

        APICallsViewController *apiViewController = [APICallsViewController alloc];
        [self.navigationController pushViewController:apiViewController animated:YES]; 
        //[apiViewController getFriendsCallAPIDialogFeed];
        [apiViewController getAppUsersFriendsUsing];


    }

謝謝你的幫助

您忘記了-init和-release。

APICallsViewController *apiViewController = [[APICallsViewController alloc] init];
...
[apiViewController release];

您可能需要閱讀Objective-C編程

首先,您需要初始化,如hwaxxer和Justin Boo所建議的。

其次,一些人建議使用autorelease autorelease是一個延遲的release ,除非需要,否則通常不應該這樣做(例如,您的方法需要將釋放推遲到以后,以便它可以將對象返回給調用者)。 簡而言之,僅在將對象返回給方法的調用者時才使用autorelease ,否則請使用release 在這種情況下,您應該使用release

在這種特定情況下,這無關緊要(因為通過推動視圖控制器,它還是會保留下來,直到該視圖從堆棧中彈出之前才被釋放),但是如果您要執行自己的內存管理(即不使用ARC),這是值得采用的良好做法,即release時,你可以(如在這種情況下),只有autorelease ,當你返回對象方法的調用者,因此必須推遲release

第三,建議閱讀並確保您了解Advanced Memory Management 這為您提供了一些您真正需要了解的內存管理基本規則(例如,如果創建了內存,則您擁有它,必須釋放它)。

第四,一旦您熟練掌握了內存管理(並且只有在這樣做之后,這才可以真正了解正在發生的事情),所以我建議您認真考慮過渡到ARC ,因為您不必處理很多事情蠢事。

對於分配/保留的每個對象,您都有責任釋放。

[apiViewController getAppUsersFriendsUsing];

放...

[apiViewController release];

暫無
暫無

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

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