【问题标题】:Converting 'ZXingObjC' (QR Code Library) non-ARC to ARC, have some problems将“ZXingObjC”(二维码库)非 ARC 转换为 ARC,有一些问题
【发布时间】:2013-06-01 14:24:41
【问题描述】:

我以前从未使用过非 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];
}

编辑: 好的,我一直在尝试制作“EDIT --> Refactor --> Convert to Objective-C ARC”,我得到:

【问题讨论】:

  • 你在 Xcode 中尝试过“编辑->重构->转换为 ARC”吗?
  • 我不知道有一个选项。我会试试的。
  • 好的,我编辑了,现在有什么想法吗?

标签: objective-c memory automatic-ref-counting qr-code retain


【解决方案1】:

另一种使用“ZXingOjbC”而不将其转换为arc projcet的方法:

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

使用以下步骤:

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

【讨论】:

    【解决方案2】:

    好的,我所做的是:

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

    项目现在与 ARC 完全兼容。 我稍后会上传到github。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多