2010-06-16 45 views
0

這些泄漏是否正常?他們是虛假的泄漏還是我應該關注的東西?儀器工具不給我任何我的應用程序的代碼行,似乎蘋果的框架泄漏?! alt text http://www.freeimagehosting.net/uploads/d50bdb5dec.png核心框架iPhone應用程序內存泄漏

好了,問題只可能來自這裏:

  • (無效)的tableView:(UITableView的*)的tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {

    DetailViewController * detailViewController = [ [DetailViewController alloc] initWithNibName:@「ProjectDetailView」bundle:[NSBundle mainBundle]];

    Project * project = [projectsArray objectAtIndex:indexPath.row];

    [detailViewController setProject:project];

    [detailViewController setTitle:[project name]];

    [self.navigationController pushViewController:detailViewController animated:YES];

    [detailViewController release];

}

OR從詳細信息視圖的viewWillAppear中事件:

  • (無效)viewWillAppear中:(BOOL)動畫{

    [超級viewWillAppear中:動畫];

    [projectName setText:[project name]];

    [appDefStatement setText:[project appDefStatement]];

    [projectDesc setText:[project desc]];

    NSMutableArray * theSketches = [[NSMutableArray alloc] initWithArray:[project。草圖allObjects]];

    [self setSketchesArray:theSketches];

    [theSketches release];

    如果([sketchesArray計數] == 0){

    [tView setHidden:YES]; 
    

    }其他{

    [tView setHidden:NO]; 
    

    }

}

+0

發佈您的一些代碼。另外,你在分析設備?有時,模擬器不準確。 – rickharrison 2010-06-16 00:26:18

+0

我在設備上做的是。該代碼是相當漫長和繁瑣的:)。但基本上我只是使用TableView和導航欄作爲我的根控制器,然後用戶可以選擇一個單元格,將它們帶到兩個TextField,一個TextView和另一個TableView的詳細視圖中。如果用戶在該表視圖中選擇了某些內容,則會再次將其發送到具有TextField和TextView的詳細視圖。我不會對這些文本框和文本視圖執行任何操作,它們只是附帶一個「更改」操作,當觸發時通過核心數據將數據保存到磁盤上。 – 2010-06-16 10:02:44

回答

0

雖然有些蘋果代碼有可能泄漏,但是您發現泄漏的事實並不意味着泄漏實際上存在。例如,它可能是你從蘋果的框架分配的東西,然後你沒有正確釋放。

希望這會有所幫助。

問候

+0

我意識到,只是不能看到發生了什麼。我加倍/三重檢查,我似乎發佈了所有需要發佈的內容... – 2010-06-16 16:09:14

1

有極少數的情況下,漏洞來自Apple的源代碼,所以我會這樣做先說第一件事情:使用

  1. 任何時候alloc你需要釋放你創建的任何對象在稍後的,安全的時間
  2. 確保在.m文件合成的任何對象的dealloc調用
  3. 被釋放
  4. 閱讀內存管理這是很有幫助的(雖然乏味)的文章:http://developer.apple.com/iphone/library/documentation/cocoa/conceptual/memorymgmt/memorymgmt.html
  5. 漫步在這個泄漏很好的例子http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/

P.S.如果沒有發佈你的代碼,我們只能推測......你可以通過發佈可疑代碼來獲得更好的答案。

+0

謝謝,我會研究這些文章。問題是要發佈什麼代碼?我必須發佈所有的代碼(而且時間很長),因爲Instruments不會在我的代碼中指向我的一行,它們只會顯示其他人(即Apple)編寫的代碼行。 – 2010-06-16 10:04:11

+0

我會從編寫處理表格和文本視圖的代碼開始。 – iwasrobbed 2010-06-16 15:47:23

+0

我加了一些代碼。 – 2010-06-16 16:08:27

0

我認爲這些都是錯誤的泄漏。其中一個漏洞甚至出現在Apple的文檔(從cellForRowAtIndexPath嘗試獲取可重用單元格的行中)取得的一行代碼中。所以我的猜測是Leaks樂器並不完美。我檢查了我的代碼多次,並確保我釋放所有已被分配/複製/保留/ mutableCopied等等。

+0

因爲我有同樣的事情發生,所以我不想再詳述它。我發現'AVAudioPlayer'中的泄漏是Apple代碼的結果,我無能爲力,因此最好繼續前進。至少現在你有更多的泄漏經驗! – iwasrobbed 2010-06-17 16:57:43