Frage

Es wurde vorgeschlagen, dass ich diese Zeile Code verwenden, um ein Bild von meinen Ressourcen Ordner / Projektbündel zu rufen. Ich sehe es auch genau so auf verschiedene Website-Tutorials viele verwendet werden.

NSBundle *mb=[NSBundle mainBundle];


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


NSImage *image=[NSImage initWithContentsOfFile:fp];

JEDOCH Ich erhalte die folgende Warnung:

  

NSImage kann nicht reagieren auf + initWithContentsOfFile +

Die Dokumentation für NSImage zeigt, dass initWithContentsOfFile in der Tat ist eine Methode, die funktionieren soll. Was könnte ich hier fehlt?

War es hilfreich?

Lösung

Sie verpassen eine +alloc

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

Sie können auch verwenden +imageNamed:, die Bilder von Ihrem Hauptbündel abruft.

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

Andere Tipps

initWithContentsOfFile: ist eine Instanzmethode, aber Sie diese Nachricht an die NSImage Klasse zu schicken. Sie müssen es zu einer schicken instanzspezifisch eine frisch zugewiesene Instanz.

Das ist, wo alloc kommt in. Es ist ein Klasse-Methode, die eine Instanz zuweist, die Sie dann die init… Nachricht sofort senden (wie Darren gezeigt).

Vergessen Sie nicht die Instanz freizugeben, wenn Sie mit ihm fertig sind. Ich Autorelease im Allgemeinen die Instanz unmittelbar nach Initing es; dann die Instanz für mich zu gegebener Zeit veröffentlicht Cocoa wird. Siehe die Memory Management Programming Guide für Cocoa rel="nofollow für weitere Informationen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top