ios - autoreleasepool中第一个用工厂方法创建的对象会在最后被释放?
伊谢尔伦
伊谢尔伦 2017-04-17 17:37:05
[iOS讨论组]

初学者,一直没搞懂ARC模式下autoreleasepool对象释放的问题,后来发现autoreleasepool中第一个用工厂方法创建的对象会在最后被释放,不知道是不是这样?还是我哪里搞错了?所以。。为什么会出现这样的输出呢?

似乎只有第一个autoreleasepool会这样,后面的包括嵌套的autoreleasepool都不会出现这个问题。

代码如下,NSMutableArray和NSMutableDictionary都重写了dealloc方法。

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithCapacity:10];
        NSMutableArray *array1=[NSMutableArray arrayWithCapacity:10];
        NSMutableArray *array2=[NSMutableArray arrayWithCapacity:10];
        __unused NSMutableArray *array3=[NSMutableArray arrayWithCapacity:10];
        dict = nil;
        array1 = nil;
        NSLog(@"------------");
        array2 = nil;
        NSLog(@"continue......");
    }
    NSLog(@"After AutoReleasePool");
    return 0;
}

输出结果:

2016-03-03 22:44:25.452 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.453 ARC[13973:3216802] ------------
2016-03-03 22:44:25.453 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.453 ARC[13973:3216802] continue......
2016-03-03 22:44:25.454 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.454 ARC[13973:3216802] NSMutableDictionary released
2016-03-03 22:44:25.454 ARC[13973:3216802] After AutoReleasePool
Program ended with exit code: 0
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
PHP中文网

NSMutableArray和NSMutableDictionary的 dealloc 方法可以重写?表示不会.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号