FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


macOSアプリ用プロジェクトで拡張子が異なる同名の画像を認識しない

NSImageについて確認したいことがあったので、macOSアプリで画像を扱おうと思ったら読み込みができないので悩んだ。

Xcodeに入れた2枚の画像ファイル

↑まずこういう2枚の画像を用意した。同名で拡張子がjpgとpngの2枚だ。これをXcodeに入れておく。

XcodeのTarget Membership指定部分

↑もちろんどちらの画像もTarget Membershipでプロジェクトに追加している。
{
    NSImage *nsimage = [NSImage imageNamed:@"img500w.jpg”];//JPEG画像
    
    NSAssert(nsimage, @"nsimage is nil");
    NSLog(@"w,h = [%f,%f]",nsimage.size.width, nsimage.size.height);
}
↑この状態でJPEG画像を読み込もうとすると
Failed to set (contentViewController) user defined inspected property on (NSWindow): nsimage is nil
↑このようなエラーがNSAssertにより吐き出されアプリは停止する。

ファイル名間違えてないしちゃんとTargetに追加してるし、、、?と思って試しにもう片方のPNG画像をTargetから外したら
w,h = [500.000000,344.000000]
↑ちゃんと読み込むことができた。
逆も同じ。
どうやら同名の画像ファイルはだめらしい、、、😳

ちなみにNSAssertがなければ
w,h = [0.000000,0.000000]
↑画像はnilだが落ちることなく数値はゼロとしてコードは進んでいく。怖いなあ。ちゃんとAssert入れないとダメだな。


なお、以上はmacOS向けプロジェクトの話なのだが、iOS向けプロジェクトでも同じなのか確認した。
{
    UIImage *uiimage = [UIImage imageNamed:@"img500w.jpg"];
    NSAssert(uiimage, @"uiimage is nil");
    NSLog(@"w,h = [%f,%f]",uiimage.size.width, uiimage.size.height);
}
↑NSImageをUIImageにしただけなのだが、こちらは同名で異なる拡張子の画像ファイルは問題なく扱うことができた。


ということでまとめると、
macOSアプリ開発では同名で異なる拡張子の画像ファイルに注意
NSAssertをちゃんと使おう
ってとこか。


Xcode 10.1
iOS 12.1
macOS Mojave 10.14.1



<< NSImageViewオブジェクトのサイズについて  TopPage  iPhone XS Maxでマインクラフトをプレイする時にホームバーが邪魔 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1247-48918009




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad