簡體   English   中英

iPhone CGRectMake內存消耗

[英]iPhone CGRectMake memory consuption

在iPhone上..為什么這樣的代碼會導致內存泄漏? 2分鍾后,凈字節數翻了一番。 我正在做的就是用NSTimer調用以下方法在屏幕上移動一個球。

有任何想法嗎?

- (void)nextFrame:(NSNotification *)notification {
    ballInstance.frame = CGRectMake(value, 0,  320, 480);
}

這里是'完整'代碼,新項目,仍然表現相同。 它會在屏幕上移動jpg,因為它會大量消耗內存。 如果我從'value'中刪除'++',那么內存就沒問題了。 (換句話說有一個靜態圖形)所以....是緩存的圖像是問題嗎? 如果是這樣,我怎么能阻止它達到天文尺寸?

- (void)applicationDidFinishLaunching:(UIApplication *)application {    


    [window makeKeyAndVisible];

    NSTimer * nSTimer =[NSTimer scheduledTimerWithTimeInterval: .02
         target: self
       selector: @selector(tick)
       userInfo: nil
        repeats: YES];
    value =0;
}

- (void)tick {
    NSLog(@"tick");
    myOutlet1.frame = CGRectMake(value++, 0,  320, 480);
}

發布的代碼沒有泄漏。 問題出在其他地方。

如果您知道nextFrame:內部存在泄漏nextFrame:它必須位於-[Ball setFrame:]因為它是此方法中發送的唯一消息。

泄漏不在您顯示的代碼中,特別是如果frame@synthesized屬性。 您需要顯示更多代碼,或者花一些時間與儀器一起找出泄漏的內容以及分配的位置。

根據Apple的說法:

這是iPhone OS 3.0中的一個錯誤。 圖形系統的分配器
將realloc事件報告為malloc事件,因此ObjectAlloc會記錄
這些作為幾乎從未被釋放的新對象。 我不是
某些為什么在添加Leaks工具時可能看不到它,但是
這兩種工具都不會顯示出真正的泄漏。

雖然我仍然不知道如何糾正它。

我發布了一個完整的示例應用程序,似乎或多或少與上面的“新項目”示例相匹配。 你能看看它,看看這是否給你任何想法? 我在模擬器和設備上運行它沒有泄漏。

http://static.fatmixx.com/MemTestApp.zip

這看起來確實沒有泄漏。 我正在建立對抗iPhoneOS 3.1 - Debug。

Sujal

暫無
暫無

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

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