2011-07-15 24 views
1

我無法理解XCode中的靜態分析器如何識別涉及單例的可能泄漏。在下面的代碼中,我得到警告,在第一行和第一個return語句中可能存在泄漏。分析器將這些警告放在第二個返回語句中。由於我沒有在這些行中進行分配,因此我認爲它是對單例的訪問,以及它的可能分配,這是導致此警告的原因。任何人都可以用靜態分析器向我解釋這裏發生了什麼?Xcode靜態分析器使用單例時的性能

 if ((self.tableView.editing & ([[[[GroupList sharedGroupList] newGroup] linkArray] count] < [[GrazeConstants sharedGrazeConstants] maxLinksPerGroup])) | 
      (([[[[GroupList sharedGroupList] newGroup] linkArray] count] == 0) & !self.tableView.editing)) { 
      return ([[[[GroupList sharedGroupList] newGroup] linkArray] count]+1); 
     } else { 
      return ([[[[GroupList sharedGroupList] newGroup] linkArray] count]); 
     } 

回答

4

new -prefixed方法根據可可存儲器管理約定是相當於alloc + init對。靜態分析器假設您的newGroup方法正在返回帶有+1保留計數的對象,而不是自動發佈的對象。

重命名該方法(例如,groupmakeGroup),或者如果無法更改名稱,請添加NS_RETURNS_NOT_RETAINED attribute

+0

謝謝。我注意到,似乎與新的前綴方法有關。但我從未夢想過分析儀使用名稱來承擔行爲。容易解決。 –

相關問題