4

Selon ce Apple page, j'ai lu que lors de l'interaction avec Cocoa sur un thread POSIX que je devrais créer un NSAutoreleasePool.callbacks POSIX et NSAutoreleasePool avec ARC

Si vous faites Cocoa appelle en dehors du fil pour principal Kit d'application exemple, si vous créez une application Foundation seule ou si vous détachez un fil dont vous avez besoin pour créer votre propre piscine autorelease.

Malheureusement, l'utilisation de NSAutoreleasePool n'est pas autorisée dans ARC.

Que dois-je faire alors pour garantir qu'il y ait toujours un pool disponible pour tout code ARC qui est auto-libéré?

Merci!

Répondre

5

Utilisez @autoreleasepool.

@autoreleasepool 
{ 
    // make Cocoa calls here 
} 

Cela permet au compilateur de raisonner correctement au sujet de la durée de vie des objets qui traversent la frontière de la piscine, qui est une exigence pour ARC. (C'est pourquoi vous ne pouvez pas utiliser NSAutoreleasePool.) En prime, c'est aussi plus rapide.