J'ai une configuration où il y a deux processus Cocoa, communiquant avec des objets distribués (DO). Le client utilise garbage collection, le serveur ne l'est pas.Cocoa Distributed Objects, client GC, serveur non-GC
Il semble que le client s'accroche aux objets distants en dehors de mes références directes à eux. Cela signifie que même après que je n'ai pas de références aux objets, ils traînent autour de NSDistantObjectTableEntry. De toute évidence, ils ne sont pas désaffectés sur le serveur. Ce n'est que lorsque le client quitte qu'il lâche tous les objets distants. Briser la connexion manuellement fonctionnerait probablement aussi, mais je ne veux pas le faire pendant que le client fonctionne.
Existe-t-il un moyen de dire à un client GC'd DO de lâcher les objets distants qui ne sont plus référencés localement?
Le client est-il une application ou un outil de ligne de commande? –
Les deux sont des applications graphiques normales. –
Fait intéressant, j'ai trouvé un problème très similaire aujourd'hui seulement dans mon cas, aucun des deux n'utilise GC (je l'ai éteint pour m'assurer que ce n'était pas la cause du bug). Checkout ma question (http://stackoverflow.com/questions/2521514/memory-management-with-objective-c-distributed-objects-my-temporary-instances-li/2521526#2521526) et l'exemple que j'ai posté là. Comme vous le dites, briser la connexion fonctionne manuellement mais cela ne semble pas correct. Alors, y a-t-il quelque chose qui nous manque fondamentalement dans la façon dont DO fonctionne? – jkp