Come assegnare in modo efficiente le immagini NSStatusItem e immagini alternative?
-
19-09-2019 - |
Domanda
Diciamo che ho un codice come questo ...
- (id) init {
...
self.myImage1 = [NSImage imageNamed:@"some_image_name"]; // setter retains
...
}
- (void) setStatusItemImage
{
[self.statusItem setImage:self.myImage1];
}
Voglio anche di animare l'elemento dello stato così ho creato 6 varianti del "aggiornamento" icona elemento dello stato e loop su un NSTimer, con metodo di destinazione simile al precedente. Le domande sono:
- Come posso efficientemente assegnare un'immagine? per esempio. Va bene se uso una trattenuta / precaricato NSImage?
- C'è un modo per animare la voce di stato in modo più efficiente? Io non conosco nessun roba Core Animation, quindi per favore abbiate pazienza con me.
Soluzione
Come dice il proverbio, l'ottimizzazione prematura è la radice di tutti i mali. Misurare prima, poi ottimizzare tutto quello che è lento, quindi misurare nuovamente per assicurarsi lo ha aiutato.
Detto questo, imageNamed:
è lento. Si dovrebbe quasi sempre usare NSBundle e -[NSImage initWithContentsOfFile:]
invece.
E 'ok se uso una trattenuta / precaricato NSImage?
Perché non si? E perché sarebbe importato l'elemento dello stato se l'immagine viene trattenuta da qualcosa d'altro o no?
C'è un modo per animare la voce di stato in modo più efficiente?
setImage:
è l'unico modo. Finché non sta caricando ogni immagine, ogni volta, non dovreste avere problemi di efficienza.