0

我以前从未使用过非 ARC,我尝试过 ZXingObjC 示例项目(QR 码扫描仪),它既是非 ARC 项目,也是库。我从删除 autorealese、dealloc 等开始。但我遇到了“保留”,我还不知道如何处理它。我会很高兴,因为它将使我们很多人受益。

“保留”语句的示例:

if (zxd) {
    input =
      [ZXCaptureDeviceInput deviceInputWithDevice:zxd
                                       ZXAV(error:nil)];
    [input retain];
  }

另一个:

- (void)setCaptureDevice:(ZXCaptureDevice *)device {
  if (device == capture_device) {
    return;
  }

  if(capture_device) {
    ZXQT({
      if ([capture_device isOpen]) {
        [capture_device close];
      }});
    [capture_device release];
  }

  capture_device = [device retain];
}

编辑: 好的,我一直在尝试制作“编辑->重构->转换为Objective-C ARC”,我得到: 在此处输入图像描述

4

2 回答 2

2

另一种使用“ZXingOjbC”而不将其转换为弧项目的方法:

我在编译它的源代码时通过关闭弧来使用该库,在同一项目中结合弧和非弧代码时它工作正常。

使用以下步骤:

  1. 将“ZXingObjC”源文件夹放入您的项目中
  2. 转到项目-> 构建阶段
  3. 选择所有 ZXingObjc 文件(您可以通过按 shift 一次选择所有文件)然后按 Enter。
  4. 键入“-fno-objc-arc”告诉编译器编译这些源代码时不使用arc。
于 2013-08-09T08:15:52.527 回答
0

好的,我所做的是:

  1. 清理所有非 ARC 旧代码。
  2. “编辑——>重构——>转换为Objective-C ARC”。
  3. 添加了缺少的 AudioToolbox.Framework

项目现在完全与 ARC 一起工作。我稍后会上传到github。

于 2013-06-01T15:19:04.197 回答