Domanda

È stato suggerito che io uso questa riga di codice per richiamare l'immagine dal mio fagotto cartella delle risorse / progetto. Vedo anche che venga utilizzato esattamente come questo su molti tutorial del sito web differenti.

NSBundle *mb=[NSBundle mainBundle];


NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"];


NSImage *image=[NSImage initWithContentsOfFile:fp];

Tuttavia, sto ricevendo il seguente avviso:

  

NSImage potrebbe non rispondere a + initWithContentsOfFile +

La documentazione per NSImage mostra che initWithContentsOfFile è in realtà un metodo che dovrebbe funzionare. Cosa potrei mancare qui?

È stato utile?

Soluzione

Ti manca un +alloc

NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp];

È inoltre possibile utilizzare +imageNamed:, che recupera le immagini dal vostro pacco principale.

NSImage* image = [NSImage imageNamed:@"topImage.png"];

Altri suggerimenti

initWithContentsOfFile: è un metodo di istanza, ma si sta inviando il messaggio alla classe NSImage. È necessario inviare a un'istanza-specificamente, un'istanza appena allocato.

Ecco dove entra in gioco alloc. E 'un metodo di classe che alloca un'istanza, che poi invia il messaggio immediatamente init… (come indicato Darren).

Non dimenticate di rilasciare l'istanza quando hai finito con esso. Generalmente autorelease l'istanza immediatamente dopo initing esso; poi, cacao rilascerà l'istanza per me al momento opportuno. Vedi le href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/" Guida alla programmazione gestione della memoria per Cocoa per ulteriori informazioni .

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