Pregunta

Se sugirió que yo uso esta línea de código para llamar a una imagen de mi paquete de recursos carpeta / proyecto. También veo que está siendo utilizado exactamente como este en muchos tutoriales diferentes sitios web.

NSBundle *mb=[NSBundle mainBundle];


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


NSImage *image=[NSImage initWithContentsOfFile:fp];

Sin embargo, estoy recibiendo la advertencia siguiente:

  

NSImage no puede responder a + initWithContentsOfFile +

La documentación para NSImage muestra que initWithContentsOfFile es en realidad un método que se debe trabajar. Lo que puede ocurrir la falta aquí?

¿Fue útil?

Solución

Te estás perdiendo un +alloc

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

También puede utilizar +imageNamed:, que obtiene imágenes de su paquete principal.

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

Otros consejos

initWithContentsOfFile: es un método de instancia, pero que va a enviar ese mensaje a la clase NSImage. Es necesario enviar a una instancia específica, una instancia asignado recién.

Aquí es donde entra en juego alloc. Es un método de clase que asigna una instancia, que luego se envía inmediatamente el mensaje init… (como Darren mostró).

No se olvide de liberar la instancia cuando haya terminado con él. I generalmente AutoRelease la instancia inmediatamente después de Initing ella; a continuación, cacao dará a conocer el ejemplo para mí en un momento apropiado. Ver las href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/" de cacao para más información .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top