2012-06-05 59 views
-2

我是iPhone開發新手。 這裏是我的代碼:它是否正確的代碼?

- (void)setImage:(UIImage *)image ImageKey:(NSObject *)imageKey 
{ 

    NSNumber *number=(NSNumber*)imageKey; 
    int num=[number intValue]; 
     UIScrollView *scrollViewFamily=(UIScrollView*)[scrollViewProfile viewWithTag:6]; 
     UIButton *btnPhoto=(UIButton*)[scrollViewFamily viewWithTag:num]; 
     [btnPhoto setImage:image forState:UIControlStateNormal]; 

     Photo *aPhoto= [appData.CurrentUser.familyListarray objectAtIndex:num-1000]; 
     aPhoto.photoImg=image; 
} 

滾動型retainCount是3,對於按鍵2和aPhoto爲1 現在我的問題是,是不是寫的如果是那麼如何釋放這些對象? 幫我。謝謝你...

+1

如果您是iPhone新手,並且這是一個新項目,您應該使用ARC並且不關心保留/釋放對象。 – florian

+0

其已開發,現在我要檢查內存泄漏...和其非弧項目 – HML

+1

這個代碼有很多錯誤;方法名稱和參數,各種隨機不必要的強制轉換,似乎使用名爲「key」的數字索引等...忽略'retainCount',它是無用的。我建議潛入一個相對簡單的iOS開發指南,然後重新考慮這些代碼。 – bbum

回答

-4

所有行都是指向內存資源的指針,所以沒有內存泄漏。你必須在分配內存時釋放內存,這樣做會使用「autorelease」,它會讓你的生活更輕鬆。

+0

對不起,我犯了一個錯誤:這不是一個錯誤,因爲你沒有分配任何東西。你的代碼是完美的。 –

+0

這個答案沒有道理;將表演從外部移動到內部的方法調用表達式*絕對不會改變*。 – bbum

+1

我知道,我以前的回答發生錯誤,並要求刪除。我寧願將此文本留作「建議」,而不是等待用戶刪除已接受的標記,因爲我無法刪除已接受的答案。我在閱讀過程中犯了一個錯誤。 –

1

我的建議是給我們ARC,然後你不必擔心內存管理。如果你一直希望做手工,然後拿這個建議straight from the docs關於retainCount:

重要這種方法通常是沒有價值的調試內存 管理問題。因爲任何數量的框架對象可能保留一個對象以保存對它的引用,而在 的同一時間,自動釋放池可能在對象上保存任意數量的延遲 版本,所以很可能無法獲得有用的 來自此方法的信息。要了解必須遵守的內存管理的基本規則,請閱讀「內存管理 規則」。要診斷內存管理問題,請使用合適的工具: 甚至在運行程序之前,LLVM/Clang靜態分析器通常會發現內存管理問題 。 Instrument應用程序中的Object Alloc儀器 (請參見Instruments用戶指南)可以跟蹤 對象分配和銷燬。鯊魚(參見Shark用戶指南) 配置文件內存分配(在您的 程序的許多其他方面)。