我的应用程序遍历 PDF 文件目录,使用 CGPDF API 函数将第一页绘制到屏幕外 UIView 子类中,这使得 UIImage 可用于应用程序。UIView 子类只是添加了@property (nonatomic,assign) image,它在其设置器中使用标准方法从 UIView 获取 UIImage,根据 Apple 引用。
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(自动引用计数)并在此方法中崩溃,在收到内存警告后不久。没有例外,仪器没有太大帮助,因为我无法观察到内存积累。只有从设置器中删除代码才能使应用程序免于崩溃。
我已经阅读了很多关于桥接的内容,这似乎不适用于我的情况。在我看来,上面的代码分配对象并且从不释放它们,至少这可以解释内存警告。
任何帮助表示赞赏。