美文网首页
@autoreleasepool的用法

@autoreleasepool的用法

作者: 向晚forever | 来源:发表于2017-03-10 14:18 被阅读108次

    今天在一个技术交流群里面看到了释放池的使用场景。算是解除了我的困惑。
    在for循环里,创建的临时变量并不会随着一次循环的完成而自动释放。
    所以当你在循环里处理大文件时就会导致内存达到峰值。
    具体用法

    for (int i=0;i<100000;i++) {
            @autoreleasepool {
                UIImage *image = [UIImage imageNamed:@"pic"];
            }
        }
    

    每一次循环结束,image这个临时变量就会销毁。
    而不使用@autoreleasepool,则对象的销毁会在这个runloop结束之后。
    苹果建议使用场景:
    1、写基于命令行的的程序时,就是没有UI框架,如AppKit等Cocoa框架时。
    2、写循环,循环里面包含了大量临时创建的对象。(本文的例子)
    3、创建了新的线程。(非Cocoa程序创建线程时才需要)
    4、长时间在后台运行的任务。

    相关文章

      网友评论

          本文标题:@autoreleasepool的用法

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