ココア - NSBundleを使用して、このコードの問題
質問
これは、私は私のリソースフォルダ/プロジェクト・バンドルから画像を呼び出すためのコード行を使用することが示唆されました。私はまた、多くの異なったウェブサイトのチュートリアルでこれとまったく同じように使用されて参照してください。
NSBundle *mb=[NSBundle mainBundle];
NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"];
NSImage *image=[NSImage initWithContentsOfFile:fp];
しかし、私は次の警告を受けています:
NSImageではは+ initWithContentsOfFile +
に応答しないことがあります
NSImageではのドキュメントはinitWithContentsOfFileが実際に動作するはずの方法であることを示しています。私はここに存在しない可能性があります?
解決
あなたが不足している+alloc
NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp];
また、あなたのメインバンドルから画像を取り出し+imageNamed:
を、使用することができます。
NSImage* image = [NSImage imageNamed:@"topImage.png"];
他のヒント
initWithContentsOfFile:
はインスタンスメソッドですが、NSImageではクラスにそのメッセージを送っています。あなたはそれを送信するために、インスタンス具体的には、新たに割り当てられたインスタンスを必要とします。
alloc
の出番それはだ。それは(ダレンが示したように)あなたが、その後すぐにinit…
メッセージを送信され、インスタンスを割り当て、クラスメソッドです。
あなたはそれで終わったときにインスタンスを解放することを忘れないでください。私は一般的に、すぐにそれをINITING後にインスタンスを自動解放しました。そして、Cocoaは適切な時期に私のためのインスタンスを解放します。詳細については、ココアのメモリ管理プログラミングガイドを参照してください。ます。
所属していません StackOverflow