Objective c 在iOS 5上的ARC中,你能看到是谁导致了发布吗?
在启用了ARC的iOS5项目中,我的一个对象过早释放,因此当我稍后尝试访问它时,我会得到一个空指针。在ARC之前,我会简单地覆盖Objective c 在iOS 5上的ARC中,你能看到是谁导致了发布吗?,objective-c,automatic-ref-counting,Objective C,Automatic Ref Counting,在启用了ARC的iOS5项目中,我的一个对象过早释放,因此当我稍后尝试访问它时,我会得到一个空指针。在ARC之前,我会简单地覆盖release,如下所示: -(oneway void)release { NSLog(@"-1"); //breakpoint goes here [super release]; } 然后在NSLog上添加了一个断点,并检查了调用堆栈以查看是谁导致了释放 如何找出谁在ARC下“调用”了释放?(“Called”可能是一个错误的词,因为编译器插入
release
,如下所示:
-(oneway void)release {
NSLog(@"-1"); //breakpoint goes here
[super release];
}
然后在NSLog上添加了一个断点,并检查了调用堆栈以查看是谁导致了释放
如何找出谁在ARC下“调用”了释放?(“Called”可能是一个错误的词,因为编译器插入了释放调用,所以我的意思是“编译器插入释放调用的行在哪里?”)。如果需要查看对象的保留、释放和自动释放发生在何处,请使用以下工具: 在仪器中运行,在分配中设置“记录参考计数”(必须停止记录才能设置选项)。使问题代码运行,停止录制,搜索感兴趣的ivar,向下钻取,您将能够看到所有保留、释放和自动释放发生的位置