2010-01-29 55 views
1

我的函數中的以下代碼(在循環中運行)正在導致我的程序使用越來越多的內存,直到它崩潰。我究竟做錯了什麼?NSMutableArray釋放/破壞

- (void) processTrackValues:(NSMutableArray*) tags { 
    NSImage* trackArt = [tags objectAtIndex:5]; 
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init]; 
    [tempArtArray addObject:trackArt]; 
    [tempArtArray release]; 
} 

我也試過:

- (void) processTrackValues:(NSMutableArray*) tags { 
    NSImage* trackArt = [tags objectAtIndex:5]; 
    NSMutableArray* tempArtArray = [[NSMutableArray alloc] init]; 
    [tempArtArray addObject:trackArt]; 
    [trackArt release]; 
    [tempArtArray release]; 
} 

編輯:這是對周圍代碼的詳細信息。我還爲示例添加了更多代碼以獲得更大的圖片。

  • trackArtNSImage指向此函數的參數之一。
  • trackArt指向的NSImage對象是在此函數之外創建的。
  • 我分配和釋放tempArtArray循環的每次迭代(因爲函數被調用的循環的每個迭代)

回答

0

您可以張貼周圍的循環代碼,以幫助獲得更大的畫面?

您是否爲每次循環迭代分配並釋放tempArtArray?如果是這樣,你可以改爲在循環之外分配一次並重用它?

trackArt對象是如何創建的?

+0

同意,張貼更多的循環。 – ruipacheco 2010-01-29 22:23:14

+0

我已經發布了更多的周圍循環,並將更多的編輯添加到了更多信息的問題中。希望這可以幫助。 – Chetan 2010-01-29 22:30:01

+0

我沒有看到一個循環,只有一個方法定義。 – ruipacheco 2010-01-29 22:47:26

2

(現在發佈兩次)方法是無稽之談。在該方法結束時,該方法完全沒有實現。

發佈真實的代碼。

特別是,您如何實際創建NSImage實例?你怎麼知道這種特殊的方法導致了膨脹和最終的崩潰?

相關問題