【问题标题】:CGContextRelease - incorrect decrement of the reference count of an object that is not ownedCGContextRelease - 不拥有的对象的引用计数的错误减少
【发布时间】:2014-04-28 10:42:08
【问题描述】:

我在 SO 上看到了很多关于这个主题的问题,但他们没有问我的情况。

分析器给了我这个警告

调用者此时不拥有的对象的引用计数减少错误

但在我的情况下,有问题的方法没有生成或不打算返回任何上下文。

我的方法是这样的:

@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);
}

分析器指向最后一行。

我该如何解决?

【问题讨论】:

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


    【解决方案1】:

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

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

    然后你可以通过调用释放你创建的上下文:

    CFRelease (ctx);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2012-05-21
      相关资源
      最近更新 更多