xcode- 为什么在Xcode 6里强引用循环没有Graph显示

问题描述

为什么在Xcode 6里强引用循环没有Graph显示

我想在Xcode 6里测试Retain Cycle,使用Xcode的Leaks Instrument去观察内存泄漏情况

1.我写了2个类,TTChild和TTParent,头文件如下

@interface TTParent : NSObject

@property (nonatomic,strong) NSMutableArray *children;

@end

@interface TTChild : NSObject

@property (nonatomic,strong) TTParent *parent;

@end

2.然后在一个按钮的动作方法里写了,如下代码,

  • (IBAction)ClickMe:(id)sender {

    TTParent *parent = [[TTParent alloc] init];
    parent.children = [[NSMutableArray alloc] init];
    for (int i = 0; i < 1000; i++) {
    TTChild *child = [[TTChild alloc] init];
    child.parent = parent;
    [parent.children addObject:child];
    }
    }

3.用Instruments依次选择Leaks-> Cycles&Roots->Leaks cycle,点击多次按钮,
出现红色的内存泄露标志,但在Graph里什么都没有显示,上面的代码不是应该有
强引用循环吗,Graph应该有显示啊,为什么没有呢,有人知道这是什么原因吗,
谁能解释一下?

解决方案

是循环引用,但Instrument不一定显示

解决方案二:

看下是不是你的child和parent存在循环引用

解决方案三:

应该是存在循环互相引用了

解决方案四:

你的意思是。。。
@property (nonatomic,strong) TTParent *parent;

(IBAction)ClickMe:(id)sender {
TTParent *parent = [[TTParent alloc] init];
parent.children = [[NSMutableArray alloc] init];
self.parent = parent;
for (int i = 0; i < 1000; i++) {
TTChild *child = [[TTChild alloc] init];
child.parent = parent;
[self.parent.children addObject:child];
}
}

时间: 2024-09-19 10:37:13

xcode- 为什么在Xcode 6里强引用循环没有Graph显示的相关文章

ios block-IOS block强引用循环问题,下面的代码为什么能避免强引用循环

问题描述 IOS block强引用循环问题,下面的代码为什么能避免强引用循环 下面的代码为什么能避免强引用循环? cell.thumbnailView.image = item.thumbnail; __weak BNRItemCell *weakCell = cell; cell.actionBlock = ^{ NSLog(@"Going to show image for %@", item); BNRItemCell *strongCell = weakCell; if ([U

c++里常量引用的问题(函数)

问题描述 c++里常量引用的问题(函数) 常量引用是什么意思,比如有一个类p,然后一个函数int f(const & p),这个函数是p的成员函数,要怎么调用他,函数体的形参怎么写.求解释谢谢啦 解决方案 求大神给举个例子真心谢谢了 解决方案二: 常量引用主要是用来表明函数的行为,就是这个参数是引用,而且是常量的,函数内部应该不会对这个引用的对象进行修改处理.只是只读的操作 解决方案三: class P { public: int fun(const int& tmp) { cout<

引用函数-c++怎么在view里的一个函数引用的函数里再引用一个函数?

问题描述 c++怎么在view里的一个函数引用的函数里再引用一个函数? 下面第一个函数就是我想要在第二个函数里面用的,而第二个函数是第一个引用的 void CZHANGMIN1View::InsertSort(unsigned char pArray, int iLength) { unsigned char tmp; int i, j; for(i = 1; i < iLength; i++) { j = i-1; tmp = pArray[i]; while(j >= 0 &&am

设计一个不强引用对象的单例字典

设计一个不强引用对象的单例字典 大家都知道,使用NSDictionary存储对象的时候会强引用对象,导致被存储对象的引用计数+1,有时候,我们想用单例来存储对象,但又不希望强引用存储的对象,这该怎么实现呢? 在这里,我们可以使用NSMapTable来实现这个功能. 我直接给出源码: WeakDictionary.h   +   WeakDictionary.m // // WeakDictionary.h // 弱引用字典 // // http://www.cnblogs.com/YouXian

ardroid图片缓存中,利用强引用缓存到内存的图片生命周期是什么?

问题描述 ardroid图片缓存中,利用强引用缓存到内存的图片生命周期是什么? 是会在该应用的内存一直保存下去还是说当该应用退出后,图片即被回收 ?

引用类-JSP引用java类问题, 类放在默认的src文件夹里,引用不到

问题描述 JSP引用java类问题, 类放在默认的src文件夹里,引用不到 我建了一个dynamic web工程,想用JSP引用java类,我写的类放在Java Resources/src/(default packge) 这个默认的文件下,有个公共类Student,在JSP里有语句/jsp:useBean 总是提示我错误: Student cannot be resolved to a type 我觉着是没引用到那个类,是什么原因啊

[翻译] USING GIT IN XCODE [5] 在XCODE中使用GIT[5]

USING GIT IN XCODE USING BRANCHES Branches can be a very effective tool to isolate new features or experiments in code.  Xcode has pretty good support for branches, but it is not shown in the project view.  The first method you can use to commit code

vb.net-为什么MFC里可以引用的API函数,到VB.NET却不能用?

问题描述 为什么MFC里可以引用的API函数,到VB.NET却不能用? 为方便起见,许多情况下要用Winform来代替MFC,于是我选择了用VB语言编写程序.其中为了窗口的通信,要用到sendmessage函数. 查阅了许多关于VB的资料(或许 VB6 与 VB.NET 的规则有点不同),编写代码如下.这个代码的目的很简单:就是要让Form1的button1被按下时候,关掉Form2. 要想达到这个目的,需要Form1对Form2发出WM_CLOSE消息. 使用工具是VS2010. 在一个pro

[翻译] USING GIT IN XCODE [3] 在XCODE中使用GIT[3]

USING GIT IN XCODE MAKING AND COMMITTING CHANGES Once you have a working copy of your project, it's time to get to work.  As you make changes to the project, Xcode will indicate when files have been changed from the working copy. 当你成功的将项目复制到了本地,现在就可以