1、既然设置了ARC,为什么还需要@autoreleasepool,有什么好处?
池子做的是运行时延迟释放,ARC已经在编译时解决了手动管理的问题,那么就没必要使用@autoreleasepool,还占内存。
2、ARC频繁释放内存 和@autoreleasepool一起释放 感觉还是前者 要好些,
这不是像数据连接池一样可以共享资源。只是延迟释放内存(又不能共享内存)。
按着这个推论在ARC条件下,没必要使用@autoreleasepool。
我知道这种想法有问题,但是不知道是哪里,新手问题多,莫喷
ARC は
@autoreleasepool
を放棄しませんが、コンパイル段階で必要なretain
/release
/autorelease> を挿入するのに役立ちます。コード>コード呼び出し。
@autoreleasepool
,而是在编译阶段帮你插入必要的retain
/release
/autorelease
的代码调用。所以,跟你想象的不一样,ARC 之下依然是延时释放的,依然是依赖于
つまり、皆さんが考えているのとは異なり、ARC はまだリリースが遅れており、依然としてNSAutoreleasePool
NSAutoreleasePool
に依存しています。これは、非 ARC モードでこれらの関数を手動で呼び出すことと本質的には同じです。これは単にコンパイルするだけです。参照カウントが正確であることを確認します。@autoreleasepool を使用すると便利です。
通常の状況では、作成した変数はスコープを超えると解放されます。
そして、関数が非常に長く、関数の実行中に多くの中間変数が表示され、大量のメモリを占有している場合は、どうすればよいでしょうか?
@autoreleasepool を使用します。
@autoreleasepoolで作成した変数は@autoreleasepool終了時に一旦解放されます。実際、 @autoreleasepool はスコープのレイヤーに相当します。