2013-06-26 44 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的可能性比较高,因此您有一个保留周期。

如果你看看分配工具,你可以打开“跟踪引用计数事件”和“只跟踪实时分配”,然后你可以潜入并看到泄漏对象上的所有保留/释放事件。