1

私のアプリケーションはPDFファイルのディレクトリを反復処理し、CGPDF API関数を使用して最初のページをオフスクリーンのUIViewサブクラスに描画します。これにより、UIImageがアプリケーションで使用できるようになります。UIViewサブクラスは、@ property(nonatomic、assign)イメージを追加するだけです。これは、Appleの参照に従って、セッターで標準的な方法を使用してUIViewからUIImageを取得します。

UIViewWithImage.h:

@interface UIViewWithImage : UIView {
    UIImage* image;
}
@property (nonatomic,strong) UIImage* image;
@end

UIViewWithImage.m:

@implementation UIViewWithImage
@dynamic image;
-(UIImage*)image {

    if( [self.layer respondsToSelector:@selector(setShouldRasterize:)])
        UIGraphicsBeginImageContextWithOptions( self.bounds.size, NO, self.contentScaleFactor );
    else
        UIGraphicsBeginImageContext(self.bounds.size);

    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}
@end

ここまでは順調ですね。私のアプリケーションはARC(自動参照カウント)を使用しており、メモリ警告を受信した直後にこのメソッドでクラッシュします。例外はありません。メモリの蓄積を観察できなかったため、機器はあまり役に立ちませんでした。セッターからコードを削除するだけで、アプリがクラッシュするのを防ぐことができます。

私はブリッジングについてたくさん読んだことがありますが、私の場合は当てはまらないようです。上記のコードはオブジェクトを割り当て、決して解放しないように思われます。少なくとも、それはメモリの警告を説明します。

どんな助けでも大歓迎です。

4

0 に答える 0