recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - 既然设置了ARC,为什么还要使用@autoreleasepool

1、既然设置了ARC,为什么还需要@autoreleasepool,有什么好处?
池子做的是运行时延迟释放,ARC已经在编译时解决了手动管理的问题,那么就没必要使用@autoreleasepool,还占内存。
2、ARC频繁释放内存 和@autoreleasepool一起释放 感觉还是前者 要好些,
这不是像数据连接池一样可以共享资源。只是延迟释放内存(又不能共享内存)。

按着这个推论在ARC条件下,没必要使用@autoreleasepool。

我知道这种想法有问题,但是不知道是哪里,新手问题多,莫喷

巴扎黑巴扎黑2766 Il y a quelques jours431

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-04-24 09:12:51

    ARC n'abandonne pas @autoreleasepool, mais vous aide à insérer les appels de code retain/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 :

    • Conserver la sémantique du décompte dans ARC
    • Qu'est-ce que @autoreleasepool

    répondre
    0
  • 迷茫

    迷茫2017-04-24 09:12:51

    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.

    répondre
    0
  • Annulerrépondre