Question

Il a été suggéré que j'utilise cette ligne de code pour appeler une image de mon dossier de ressources / paquet de projets. Je vois aussi utilisé exactement comme celui-ci sur de nombreux tutoriels de site différents.

NSBundle *mb=[NSBundle mainBundle];


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


NSImage *image=[NSImage initWithContentsOfFile:fp];

Cependant, je reçois l'avertissement suivant:

  

NSImage peut ne pas répondre à + initWithContentsOfFile +

La documentation NSImage montre que initWithContentsOfFile est en fait une méthode qui devrait fonctionner. Que pourrais-je manquer ici?

Était-ce utile?

La solution

Vous êtes absent un +alloc

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

Vous pouvez également utiliser +imageNamed:, qui va chercher des images de votre paquet principal.

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

Autres conseils

initWithContentsOfFile: est une méthode d'instance, mais vous envoyez ce message à la classe NSImage. Vous devez l'envoyer à une instance spécifique, une instance fraîchement attribuée.

C'est là alloc entre en jeu. Il est une méthode de classe qui attribue une instance, que vous envoyez ensuite immédiatement le message init… (comme Darren a montré).

Ne pas oublier de libérer l'instance lorsque vous avez terminé avec elle. J'AutoRelease généralement l'instance immédiatement après Initing il; puis, Cocoa publiera l'instance pour moi à un moment approprié. Voir les Guide de programmation de gestion de la mémoire pour cacao pour plus d'informations .

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