Je suis un vétéran de 15 ans de C++ et pensé que je pourrais facilement gérer les problèmes de mémoire sur l'iPhone. Mais j'ai été humilié par ce nouvel environnement à plusieurs tours. Voici mon problème. J'espère que je pose la question correctement. Fondamentalement, je conserve un tableau mutable de mon objet commun à l'appdélégate. Cela semble être l'endroit raisonnable pour conserver une collection d'objets utilisés par plusieurs vues différentes. Cependant, entre le moment où je crée et déplace la vue vers le contrôleur de navigation et le moment où la vue commence à utiliser ces valeurs, l'emplacement dans la mémoire où j'ai créé mes objets est empilé avec des valeurs différentes.collections sur appdelegate sont écrasés
J'ai passé en revue tout mon code pour m'assurer que les comptes de référence étaient exacts mais n'ont rien trouvé. Alors j'ai commenté TOUS les appels de "release" pour garantir que les objets existent toujours mais le piétinement continue.
Ma question est la suivante ... Y a-t-il quelque chose que je dois savoir quand je "pousse" une vue qui pourrait me faire piétiner la mémoire? J'ai un bouton que l'utilisateur appuie pour allouer un contrôleur de vue, puis un "pushViewController" pour le contrôleur de navigation contenant. Je vérifie sur la ligne suivante que mes objets ont été créés et je dépiste la mémoire. Malheureusement, la mémoire est écrasée lorsque l'événement du bouton se déroule sur un "PurpleEventCallback".
Est-ce que cela a du sens pour n'importe qui? Y a-t-il quelque chose qui arrive à mon point de vue qui n'est pas communément connu et qui rend ma mémoire invalide?
Pour être précis: Les méthodes qui commencent par 'alloc' ou' new' ou qui contiennent 'copy' sont les seules qui retournent des objets non auto-libérés. –
+1 pour NSZombieEnabled. En tant que développeur C++ de longue date, j'avais vraiment besoin de lire Guide de programmation de gestion de mémoire pour Cocoa avec une attention particulière à la propriété. http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html –
Ici, je pensais être intelligent en définissant ma taille de tableau d'origine et en créant la chaîne à la volée. Je n'avais aucune idée qu'ils étaient autoreleased. Je suis retourné et j'ai trouvé plusieurs divergences qui nécessitaient que leur nombre de refs soit dépassé. Merci! Marcus –