2013-06-26 75 views
1

我想了解Xcode中的Allocations工具告訴我什麼。我正在使用ARC。我在我的主詳細應用程序的DetailViewController中有以下方法:這個功能爲什麼會造成泄漏?

- (FFMasterViewController*) masterViewController 
{ 
    return (FFMasterViewController*)[[self.splitViewController.viewControllers objectAtIndex:0] topViewController]; 
} 

- (SQLDataController*) sqlDataController 
{ 
    return self.masterViewController.dataController; 
} 

第一種方法似乎很好。但根據Allocations的調查,第二個內存泄漏導致100.0%。 dataController是我的MasterViewController中的一個ivar。我編寫了兩種方法,以便從我的DetailViewController中的方法中引用MasterViewController和DataController。我可以顯示更多代碼,但我不確定接下來要查看哪些內容才能找到泄漏。我不明白如何返回一個指針在一個案件是好的,但在另一個導致泄漏。

+0

也許我需要補充一點,masterViewController和sqlDataController在我的DetailViewController中定義爲只讀屬性。我正在爲每個這些屬性顯示訪問器方法。 –

+0

你可以顯示'masterViewController'和'dataController'屬性聲明嗎? –

+0

@property(只讀,非原子)FFMasterViewController * masterViewController; –

回答

2

它告訴你其中泄漏被分配,而不是什麼導致泄漏。

由於您使用ARC的可能性比較高,因此您有一個保留週期。

如果你看看分配工具,你可以打開「跟蹤引用計數事件」和「只跟蹤實時分配」,然後你可以潛入並看到泄漏對象上的所有保留/釋放事件。