Quali & # 8220; oggetti di livello superiore & # 8221; di cui parla Apple nella Guida alla programmazione della gestione della memoria?

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

  •  03-07-2019
  •  | 
  •  

Domanda

In Guida alla programmazione della gestione della memoria per Cocoa Apple parla di oggetti di livello superiore. Dicono che ho bisogno di uno sbocco per ognuno di essi.

  

Se ci sono oggetti di livello superiore   non conservare nei punti vendita, tuttavia, tu   deve conservare la matrice restituita   dal loadNibNamed: proprietario: opzioni:   metodo o gli oggetti all'interno dell'array   per impedire che quegli oggetti siano   rilasciato anticipatamente.

Quindi cosa significano esattamente con " oggetto di livello superiore " ;? Direi che parlano della vista radice e della finestra. Cos'altro? E questo suggerimento è solo per i casi in cui vorrei caricare manualmente il pennino? O si applica per qualsiasi pennino e in ogni caso?

È stato utile?

Soluzione

Gli oggetti di livello superiore sono oggetti che compaiono nella finestra principale del pennino in Interface Builder, oltre al proprietario e all'applicazione File.

Altri suggerimenti

Sì, si tratta dei casi in cui si carica il pennino manualmente, altrimenti non si sarebbe chiamato loadNibNamed: proprietario: opzioni: .

Gli oggetti che appaiono nella finestra con il proprietario del file, il primo risponditore, la vista sono oggetti di livello superiore. Tutto ciò che aggiungi alla vista sarà una sottoview: tutte le sottoview sono mantenute dalla loro superview diretta, quindi non devono essere conservate altrove. La vista stessa viene mantenuta dal controller della vista, quindi non è necessario conservarla.

Se aggiungi oggetti non visualizzati o viste che non metti subito nella vista principale (come i pulsanti della barra degli strumenti che non vengono attualmente visualizzati) devi mantenerli o verranno rilasciati. Il mio metodo preferito per farlo è con IBOutlets usando @property, in questo modo:

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

Questo fa sì che -setMyButton: venga chiamato sul proprietario del file (se questo codice è nel proprietario del file) e l'oggetto collegato tramite IB viene inviato per essere archiviato in questa proprietà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top