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

objective-c - NSAutoreleasePool和autoreleasepool的区别

NSAutoreleasePool的官方解释
Important If you use Automatic Reference Counting (ARC), you cannot use autorelease pools directly. Instead, you use @autoreleasepool blocks instead. For example, in place of:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init;
// Code benefitting from a local autorelease pool.
[pool release];

you would write:

@autoreleasepool {
// Code benefitting from a local autorelease pool.
}

@autoreleasepool blocks are more efficient than using an instance of NSAutoreleasePool directly; you can also use them even if you do not use ARC.

xcode4.3引入ARC,release这块就有些变化,当你使用ARC,就必须将NSAutoreleasePool的地方换成 @autoreleasepool

http://marshal.easymorse.com/archives...

ringa_leeringa_lee2712 Il y a quelques jours369

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

  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:18:28

    Les deux ont des temps d'action différents. La méthode d'écriture de l'objet AutoReleasePool agit sur le runtime, et @autoreleasepool agit sur la phase de compilation. Si vous souhaitez activer ARC, vous devez indiquer au compilateur d'activer la gestion automatique du comptage de références pendant la phase de compilation, et vous ne pouvez pas l'ajouter dynamiquement au moment de l'exécution.

    répondre
    0
  • 高洛峰

    高洛峰2017-04-21 11:18:28

    Maintenant, Apple recommande d'utiliser @autoreleasepool{}, que ARC soit ou non utilisé

    Les blocs @autoreleasepool sont plus efficaces que l'utilisation directe d'une instance de > NSAutoreleasePool ; vous pouvez également les utiliser même si vous n'utilisez pas ARC ; http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html

    répondre
    0
  • Annulerrépondre