De quels «objets de premier niveau» Apple parle-t-il dans le Guide de programmation de la gestion de la mémoire?

StackOverflow https://stackoverflow.com/questions/804539

  •  03-07-2019
  •  | 
  •  

Question

Dans le Guide de programmation de la gestion de la mémoire pour Cocoa Apple parle d’objets de niveau supérieur. Ils disent que j'ai besoin d'un point de vente pour chacun d'entre eux.

  

S'il y a des objets de niveau supérieur que vous   ne pas stocker dans les points de vente, cependant, vous   doit conserver soit le tableau retourné   par le loadNibNamed: propriétaire: options:   méthode ou les objets à l'intérieur du tableau   pour empêcher ces objets d'être   libéré prématurément.

Que signifient-ils exactement par "objet de niveau supérieur"? Je dirais qu'ils parlent de la vue racine et de la fenêtre. Quoi d'autre? Et cet indice concerne-t-il uniquement les cas dans lesquels je souhaiterais charger leur pointe manuellement? Ou s’applique-t-il à n’importe quel casse-tête?

Était-ce utile?

La solution

Les objets de niveau supérieur sont des objets qui apparaissent dans la fenêtre principale de l'interface Builder d'Interface Builder, à l'exception de Propriétaire et application de Fichier.

.

Autres conseils

Oui, il s'agit des cas où vous chargez le Nib manuellement, sinon vous n'auriez pas appelé loadNibNamed: propriétaire: options: .

Les objets qui apparaissent dans la fenêtre avec le propriétaire du fichier, le premier répondeur et la vue sont des objets de niveau supérieur. Tout ce que vous ajoutez à la vue sera une sous-vue. Toutes les sous-vues sont conservées directement dans leur aperçu, elles ne doivent donc pas être conservées ailleurs. La vue elle-même est conservée par le contrôleur de vue, elle n'a donc pas besoin d'être conservée.

Si vous ajoutez des objets n'appartenant pas à la vue, ou des vues que vous ne placez pas tout de suite dans votre vue principale (tels que les boutons de la barre d'outils qui ne s'affichent pas actuellement), vous devez les conserver, sinon ils seront libérés. Ma méthode préférée pour ce faire est d'utiliser IBOutlets avec @property, comme ceci:

@property(nonatomic, retain) IBOutlet UIBarButtonItem * myButton;

Ceci provoque l'appel de -setMyButton: sur le propriétaire du fichier (si ce code est dans le propriétaire du fichier) et que l'objet connecté via IB est envoyé pour être stocké dans cette propriété.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top