[英]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
屬性。 您需要顯示更多代碼,或者花一些時間與儀器一起找出泄漏的內容以及分配的位置。
這是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.