私のアプリケーションは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(自動参照カウント)を使用しており、メモリ警告を受信した直後にこのメソッドでクラッシュします。例外はありません。メモリの蓄積を観察できなかったため、機器はあまり役に立ちませんでした。セッターからコードを削除するだけで、アプリがクラッシュするのを防ぐことができます。
私はブリッジングについてたくさん読んだことがありますが、私の場合は当てはまらないようです。上記のコードはオブジェクトを割り当て、決して解放しないように思われます。少なくとも、それはメモリの警告を説明します。
どんな助けでも大歓迎です。