美文网首页iOS 优化
iOS 内存管理强化题

iOS 内存管理强化题

作者: 酷酷的哀殿 | 来源:发表于2017-03-01 23:52 被阅读558次

MRC 下,如何设计一个方法,可以把传入的对象完全销毁?

- (void)destroy:(id)obj {
//销毁操作
}

附测试用例:

- (void)test1 {
    NSString *name = @"酷酷的哀殿";
    [self destroy:name];
}
- (void)test2 {
    dispatch_block_t block = ^{
    };
    
    [self destroy:block];
}

相关文章

网友评论

  • Enum:想走c++直接delete的我是不是没救了。:joy:
    Henray:@酷酷的哀殿 想走c的我直接free是没救了。
    酷酷的哀殿: @Enum 是的,没救了
  • 风不会停歇:Class oldClass = object_getClassName(obj);
    [obj release];
    Class newClass = object_getClassName(obj);
    while(oldClass == newClass){
    oldClass = object_getClassName(obj);
    [obj release];
    newClass = object_getClassName(obj);
    }
    酷酷的哀殿: @风不会停歇 引用计数不确定呢?
    风不会停歇:@酷酷的哀殿 iOS 9.0 测试可行
    - (void)destroy:(id)obj {
    Class oldClass = object_getClass(obj);
    [obj release];
    obj = nil;
    Class newClass = object_getClass(obj);

    while(oldClass == newClass){
    oldClass = object_getClass(obj);
    [obj release];
    obj = nil;
    newClass = object_getClass(obj);
    }
    }
    酷酷的哀殿:更新了测试用例,你可以在非 debug 模式下,真机运行 APP,test1 会crash。
  • 天口三水羊:@酷酷的哀殿 objc_destructInstance(obj);objc_dispose(obj);
    酷酷的哀殿:更新了测试用例,test2 会crash。
    天口三水羊:@酷酷的哀殿 木有了 给答案吧 我的哥 另外这样会有啥问题:smile:
    酷酷的哀殿:这个方案仍然有问题,有其它方案吗?
  • 青木KON:- (void)destroy:(id)obj {
    //销毁操作
    [obj retain];
    NSInteger count = [obj retainCount];
    for (int i = 0; i < count ; i++) {
    [obj release];
    }
    }
    酷酷的哀殿:更新了测试用例,你可以在非 debug 模式下,真机运行 APP,test1 会crash。
    酷酷的哀殿: @ALVIN_YANG 这样写容易crash
  • 天口三水羊:dispose+destroyInstance?
    酷酷的哀殿: @天口三水羊 可以贴出代码来
    天口三水羊:@七叔__家的羊 销毁实例 回收内存
    coding_Liu:@天口三水羊 没懂

本文标题:iOS 内存管理强化题

本文链接:https://www.haomeiwen.com/subject/apthgttx.html