簡體   English   中英

Objective-C確定哪些對象保留另一個對象

[英]Objective-C determine what objects retain another object

我在iPhone上的內存泄漏有一些問題(可以想象),並且我有一個保留計數為10的自定義對象。

我有什么辦法可以知道哪些代碼觸發了特定對象實例的保留計數增加? 如果這很重要,我正在使用GHUnit。

嘗試使用Build & Analyze 它通常可以告訴您對象是否被保留而不釋放。

泄漏工具(XCode中的“工具”之一)能夠分析這種事情,但是我認為您不能以編程方式來做到這一點。

這是一個很棒的教程: http : //mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/

(更新以總結注釋):如果您想在keep方法中設置一個斷點(以查看堆棧跟蹤),則可以覆蓋keep方法。

保留計數幾乎是無用的-如果某條語句在語句中被retainautorelease ,那是完全可以的,但是其保留計數將增加1。

如果要確切地找到要retain特定對象的位置,請重寫該類的retain實現以測試您的對象,並在此處設置斷點:

@implementation MyClass
-(id) retain
{
    if(self == ObjectThatImTracking)
        NSLog(@"[ObjectThatImTracking retain]\n");  // put a breakpoint here
    return [super retain];
}

然后在調試器中運行程序,並在遇到斷點時查看調用堆棧。

您是否試圖在模塊中查找該類的所有保留用例? Maby可以幫助..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM