J'ai utilisé cette technique une fois auparavant, pour une situation similaire (la réponse autonome d'un délégué Web à un objet peut survivre à la vue qui a lancé la requête).
Cela fonctionne, mais est en fait plutôt difficile à obtenir. Depuis lors, j'ai trouvé que l'utilisation de NSOperations dans une NSOperationQueue est une approche beaucoup plus solide et bien comprise pour encapsuler des actions en arrière-plan qui s'exécutent indépendamment des demandeurs. Habituellement, lorsqu'une opération est effectuée, une notification est envoyée sur le thread principal, informant que l'appelant est toujours là et que les données sont prêtes à être récupérées. Plus pour les demandes distantes simples, vous pouvez utiliser les appels URL synchrones plus simples dans votre Opération car ils fonctionnent dans un thread séparé et ne bloquent pas le thread principal lorsque les données sont entrantes (utile pour extraire des petites images d'URL, par exemple) .
Veuillez décrire plus en détail pourquoi vous le feriez. – nall
Appuyé. Qu'est-ce que vous essayez d'accomplir ici? –
J'ai trouvé ce qui est fondamentalement la même question: http://stackoverflow.com/questions/1385433/is-calling-self-release-allowed-to-control-object-lifetime Mon cas est similaire, un objet qui existe, effectue des appels Web, écrit sur sqlite et contrôle son propre cycle de vie. Par exemple, il reçoit un rappel de NSUrlConnection, il écrit dans sqlite, et c'est fait. Je suppose que le rappel pourrait être délégué à l'application, et il traite de la libération, mais j'ai aimé l'idée de l'encapsulation de la logique dans le cadre de cet objet. J'ai aimé l'une des suggestions d'utilisation autorelease au lieu de la libération. – Alan