当前位置:  开发笔记 > IOS > 正文

Objective-C - 测试被解除分配/释放的对象实例

如何解决《Objective-C-测试被解除分配/释放的对象实例》经验,为你挑选了2个好方法。

有一些方法可以测试一个objective-c实例被解除分配/释放(保留计数== 0)?

例如,对象A有一个对象B的引用(指针),但是对象B可以在内存中释放低级别,我如何测试引用B以确保它被解除分配?

@interface A : NSObject {
    B b;
}

@implementation A {

- (void) someAction:(id) sender {
    //is b previously dealloced?? 
    if ..... ???? {
        b = [[B alloc] init];
    }
    // continue
}
}

谢谢!!



1> 小智..:

如果设置NSZombieEnabled环境变量,则释放的对象将成为实例NSZombie.它们在下一次消息时抛出,导致代码崩溃和刻录 - 正是您需要调试这种情况.

http://www.cocoadev.com/index.pl?DebuggingAutorelease

更新:对于XCode 4.0,请参阅如何在Xcode中启用NSZombie?



2> Chuck..:

您无法测试对象是否已被释放,因为显然该对象不再与之交谈.但是,如果b在释放它时(例如,通过执行self.b = nil)将其设置为nil ,则可以测试nil并创建对象.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有