4

私のアプリでは、ディスクから画像を読み込み、UIBUtton サムネイルとして使用します。

画像を取得するには、Drawing オブジェクトのサムネイル画像プロパティのゲッターをオーバーライドして、ディスクから画像を読み込みます。

- (UIImage *)thumbnailImage {

    if (_thumbnailImage) {
        return _thumbnailImage;
    }

    NSString *thumbnailImagePath = [[self getFullPathWithDataFilename:NO] stringByAppendingPathComponent:kThumbImageFileName];

    if ([[NSFileManager defaultManager] fileExistsAtPath:thumbnailImagePath]) {
        _thumbnailImage = [[UIImage imageWithContentsOfFile:thumbnailImagePath] retain];

        return _thumbnailImage;
    }

    return nil;
}

次に、次のように各ボタンにサムネイルを読み込みます。

[button setImage:drawing.thumbnailImage forState:UIControlStateNormal];

この時点で、ボタンがビューに追加され、正常に動作します。ただし、サムネイル画像の作成元のファイルを移動すると、ボタンをクリックしたときに次のエラー (2 回) が表示されます。

ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/F07CB571-4AAA-47E2-B3EB-3D4523AE7B51/Library/root.stack/C1199105-062F-40A3-B56C-3BB1106AC003.drawing/thumbImage.png'
         error = 2 (No such file or directory)

これによりアプリがクラッシュすることはなく、サムネイルも引き続き表示されますが、エラーがスローされないようにこの問題を解決したいと考えています。

UIImage は、作成元のファイルへの参照にぶら下がっていると思います。これにもブレークポイントを設定しようとしましたが、エラーの原因となっている特定のコード行を特定できません。

4

0 に答える 0