CGContextRelease - 错误地减少未拥有的对象的引用计数

时间:2014-04-28 10:42:08

标签: cocoa automatic-ref-counting quartz-graphics

我已经看到很多关于这个主题的问题,但他们不会问我的情况。

Analyzer正在给我这个警告

调用者不在该点拥有的对象的引用计数的错误减少

但在我的情况下,所讨论的方法不会生成或不打算返回任何上下文。

我的方法是这样的:

@property (nonatomic, assign) CGContextRef ctx;

- (void)generatePDFWithSize:(CGSize)size andURL:(NSURL*)url {

  CGRect mediaBox = CGRectZero;
  mediaBox.size = tamanho;

  self.ctx = CGPDFContextCreateWithURL((__bridge CFURLRef)(URL), &mediaBox, NULL);

  for (int i=0; i<numberOfPages; i++) {
     CGPDFContextBeginPage(self.ctx, NULL);
     //... bla bla bla... generate page
     CGPDFContextEndPage(self.ctx);
  }

  CGContextRelease(self.ctx);
}

分析器指向最后一行。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可以单独引用您的上下文,例如:

CGContextRef ctx = CGPDFContextCreateWithURL((__bridge CFURLRef)(URL), &mediaBox, NULL);
self.ctx = ctx;

然后,您可以通过调用

来释放您创建的上下文
CFRelease (ctx);

所以你没有发布编译器认为自己拥有的那个。