Je parle de méthodes comme -removeAllObjects, -removeLastObject, etc. pour NSMutableArray. La documentation indique seulement que ces méthodes 'enlèvent' l'objet du tableau. Les objets supprimés sont-ils libérés?Est-ce que NSMutableArray -removeLastObject RELEASE l'objet?
Répondre
Oui, c'est le cas. Toute suppression appelle la libération du NSObject
supprimé.
Les NSArray
class reference Précise:
Les tableaux maintiennent des références fortes à leur contenu-dans une mémoire gérée environnement , chaque objet reçoit un message conserver avant son id est ajouté au tableau et un message de libération lorsqu'il est supprimé du tableau ou lorsque le tableau est désalloué. Si vous souhaitez une collection avec différents sémantique de propriété d'objet , considérez à l'aide de référence CFArray, NSPointerArray ou NSHashTable à la place.
Oui, ils sont libérés. Vous pouvez voir que l'objet contenu est libéré en remplaçant release
dans un objet que vous avez placé dans le conteneur. Appelez la méthode release
de la superclasse et définissez un point d'arrêt dessus. Vous verrez que c'est sorti.
J'avais d'abord déclaré que je pensais que les objets étaient auto-libérés. Il s'avère que je crois que j'ai tort à ce sujet.