NSZombieEnabled又让我调试到深夜三点

来源:未知 责任编辑:智问网络 发表时间:2013-09-26 23:53 点击:

最近这个项目在用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的亏,这次又栽在它手上。不过总算找到原因了,不过这几个小时都做的无用功,只有长点经验值。

 


摘自 开心程序

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • UITableView一些方法
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • 如何为Iphone应用创建启动界面
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1