1、既然设置了ARC,为什么还需要@autoreleasepool,有什么好处?
池子做的是运行时延迟释放,ARC已经在编译时解决了手动管理的问题,那么就没必要使用@autoreleasepool,还占内存。
2、ARC频繁释放内存 和@autoreleasepool一起释放 感觉还是前者 要好些,
这不是像数据连接池一样可以共享资源。只是延迟释放内存(又不能共享内存)。
按着这个推论在ARC条件下,没必要使用@autoreleasepool。
我知道这种想法有问题,但是不知道是哪里,新手问题多,莫喷
ARC n'abandonne pas
@autoreleasepool
, mais vous aide à insérer les appels de coderetain
/release
/autorelease
nécessaires lors de la phase de compilation.Donc, contrairement à ce que vous pensez, ARC est toujours une version retardée et s'appuie toujours sur
NSAutoreleasePool
C'est essentiellement la même chose que l'appel manuel de ces fonctions en mode non-ARC, c'est juste la précision du comptage de références. sera garanti.Référence :
Utiliser @autoreleasepool est utile.
Dans des circonstances normales, les variables que vous créez seront publiées lorsqu'elles dépasseront leur portée.
Et si votre fonction est très longue et que de nombreuses variables intermédiaires apparaissent lors de l'exécution de votre fonction, occupant une grande quantité de mémoire, que devez-vous faire ?
Utilisez @autoreleasepool.
Les variables créées dans @autoreleasepool seront publiées une fois à la fin de @autoreleasepool. En fait, @autoreleasepool équivaut à une couche de portée.