NSZombieEnabled又让我调试到深夜三点

最近这个项目在用ARC,在追踪内存的时候,发现内存不对。

这样的情况下就不会调用dealloc方法:

@interface Obj1 : NSObject
{
    Obj2 *obj2;   
}

@interface Obj2 : NSObject
{
}

@implementation Obj1

-(void)dealloc
{
    //obj2 = nil;  // <--- This is needed to get obj2 to be dealloc'd.
    NSLog(@"Obj1 dealloc");
}

-(id)init
{
    if ((self = [super init]) == nil)
        return nil;

    obj2 = [[Obj2 alloc] init];

    return self;
}

@end

@implementation Obj2

-(void)dealloc
{
    NSLog(@"Obj2 dealloc");
}

-(id)init
{
    if ((self = [super init]) == nil)
        return nil;

    return self;
}

@end

如果obj1的dealloc断点断下来了,那么也会调用obj2的dealloc也会断下来,可是无论如何也不会断。 开始我在obj1的dealloc加obj2 = nil,让其回收内存,可是ARC有这个功能,不需要加这行呀。  一直无解呀,代码没问题,最后check 设置(弄了好多个小时),原来开启了NSZombieEnabled。汗水都出来了,上次吃了NSZombieEnabled的亏,这次又栽在它手上。不过总算找到原因了,不过这几个小时都做的无用功,只有长点经验值。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值