2010-03-02 6 views
2

Je suis un nouveau venu dans le développement de l'iPhone et je rencontre des problèmes avec la gestion de la mémoire.Objective C Retain/Release Déboguer

J'ai construit une application Multiview avec cette structure:

Main Menu - Preferences - Subview with UIPicker Item.

La navigation se fait avec un contrôleur de navigation (Push/Pop vue à/de la pile).

Tout fonctionne bien. Mais si je change environ 20 fois de Préférences en Subview avec UIPicker, le programme se bloque.

Parfois, je reçois un message comme celui-ci:

objc[5817]: FREED(id): message release sent to freed object=0x3d53390

Le problème est que je ne sais pas où est le problème.

Existe-t-il une quelconque possibilité d'obtenir des informations étendues pour voir quel objet a causé le crash?

Répondre

1

Vous pouvez poster un code pour voir si quelqu'un peut attraper où votre erreur, mais pour répondre à votre question:

Vous pouvez activer Zombies

Ce que vous faites est d'activer les zombies dans votre application, et cela fait que lorsqu'un objet est libéré, au lieu de libérer de la mémoire, il est stocké avec le type d'objet qu'il était auparavant. L'application se bloque ensuite lorsque cette mémoire est à nouveau touchée, vous indiquant où elle a été touchée la première fois alors qu'elle n'aurait pas dû l'être, et quel type d'objet il s'agissait.

Assurez-vous que vous avez désactivé les zombies, car il utilise tellement de mémoire.