1

我的应用程序遍历 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(自动引用计数)并在此方法中崩溃,在收到内存警告后不久。没有例外,仪器没有太大帮助,因为我无法观察到内存积累。只有从设置器中删除代码才能使应用程序免于崩溃。

我已经阅读了很多关于桥接的内容,这似乎不适用于我的情况。在我看来,上面的代码分配对象并且从不释放它们,至少这可以解释内存警告。

任何帮助表示赞赏。

4

0 回答 0