2011-08-05 145 views
0

當我分析我的projetc,Xcode的分析找對象的一些潛在泄漏分配 但麻煩的是,我不知道這意味着什麼,以及如何解決這個內存問題:對象的潛在泄漏分配

這裏是我的文件的圖片,

enter image description here

這裏是代碼

#import "RoundRect.h" 

// 
// NewPathWithRoundRect 
// 
// Creates a CGPathRect with a round rect of the given radius. 
// 
CGPathRef NewPathWithRoundRect(CGRect rect, CGFloat cornerRadius) 
{ 
    // 
    // Create the boundary path 
    // 
    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, 
     rect.origin.x, 
     rect.origin.y + rect.size.height - cornerRadius); 

    // Top left corner 
    CGPathAddArcToPoint(path, NULL, 
     rect.origin.x, 
     rect.origin.y, 
     rect.origin.x + rect.size.width, 
     rect.origin.y, 
     cornerRadius); 

    // Top right corner 
    CGPathAddArcToPoint(path, NULL, 
     rect.origin.x + rect.size.width, 
     rect.origin.y, 
     rect.origin.x + rect.size.width, 
     rect.origin.y + rect.size.height, 
     cornerRadius); 

    // Bottom right corner 
    CGPathAddArcToPoint(path, NULL, 
     rect.origin.x + rect.size.width, 
     rect.origin.y + rect.size.height, 
     rect.origin.x, 
     rect.origin.y + rect.size.height, 
     cornerRadius); 

    // Bottom left corner 
    CGPathAddArcToPoint(path, NULL, 
     rect.origin.x, 
     rect.origin.y + rect.size.height, 
     rect.origin.x, 
     rect.origin.y, 
     cornerRadius); 

    // Close the path at the rounded rect 
    CGPathCloseSubpath(path); 

    return path; 

} 

釷爲你提供非常有用的幫助。

PS:我的所有謨正常工作在iPhone模擬器 它是一個應用程序,用的TabBar和4段,兩段都是空的, 和其他兩個部分是tableview中的細節視圖(數據從拍攝plist) 當我在我的設備上測試應用程序時,兩個空白部分完美地工作,並且正確的兩個tableview中的一個顯示detailview,第二個tableview巫婆在模擬器中工作沒有推動detailview, 讓我發瘋的是它今天上午工作正常

一個問題: 是一個plist受它所包含的數據的限制,我的意思是,如果有一個大的例子與500字典它的例子EMS,這可能會麻煩的應用程序的良好顯示?

感謝

回答

3

當返回一個CF/CG分配時,函數應該以Create爲前綴。

I.e.重命名你的功能CreatePathWithRoundRect(),分析儀應該停止抱怨。

請注意,您不希望與CG/CF類型混淆autorelease;也就是說,遵循由包含返回對象類型的框架延續的模式。因此,從該函數返回+1保留計數對象是有道理的。

+0

非常感謝我會嘗試 – a3116b

0

關於潛在的泄漏:

似乎分析儀解釋你NewPathWIth....方法作爲便捷構造;這樣的構造函數按照約定返回autorelease的對象。所以我想,喲刪除分析儀警告你應該做的:

return [path autorelease]; 

這是否是確定你是如何使用的返回值,我不知道......我的意思是:如果你返回像你現在這樣做的對象,你不需要被叫保留它;如果你將它返回自動釋放,被調用者可能需要保留它,如果它需要的時間比當前的執行方法更長。

至於plist問題,我認爲plist沒有限制。問題在於你如何處理它。如果您創建的表格視圖有500行,那很重要,但是由於表格視圖針對單元格的管理方式進行了優化,所以應該沒問題。無論如何,需要更多的信息(可能這是問S.O.的第二個問題)。

+1

幾乎正確的分析,但不完全正確的解決方案。 – bbum

+0

@sergio感謝您的旅遊幫助,我也會試試 – a3116b