【问题标题】:XCode - EXC_BAD_ACCESS. -[Not A Type retain]XCode - EXC_BAD_ACCESS。 -[Not A Type 保留]
【发布时间】:2012-04-10 00:06:19
【问题描述】:

我正在尝试将此barcode source code by Stefanhafeneger 包含到我的项目中。我从一个简单的相机示例和条码引擎开始,对于第一次条码解码,一切正常。当我第二次尝试时,我收到 EXC_BAD_ACCESS。在应用程序崩溃之后,它只工作 1 次。

Here is a screen recording of how the appilcation crash.

我正在我的应用程序中使用来自 google 的 DataMatrix 标签进行测试。

我几天来一直在寻找解决方案,我尝试过 NSZombieEnabled,并使用 Instrument 进行调试,但我仍然没有运气。下图是来自 xcode 的错误。

*** -[Not A Type retain]: message sent to deallocated instance 0x7b21ed0

供您参考,这是一个启用 ARC 的项目。有人请帮忙,我还是几个月大的初学者。

这是我的这个项目的 xCode 文件Barcode-Datamatrix Project

更新:我还尝试通过使用链接器标志 -fno-objC-arc 为与该库相关的每个文件禁用 ARC,但结果仍然相同。除了我尝试了imageView.image = [UIImage imageWithCGImage:image.CGImage]; 或复制imageView.image = [image copy]; 之外,应用程序仍然在同一个地方崩溃。

非常感谢 亲

【问题讨论】:

  • 我以前从未见过“Not A Type”...您能确认您使用的库支持 ARC 吗?似乎通过委托方法传入的图像在到达该行时已被释放。
  • 我不确定这个库。由于我的项目启用了 ARC,因此我已从库中删除了所有发布、保留、自动释放功能。不能在所选文件中禁用 ARC 吗?
  • 绝对有可能stackoverflow.com/questions/6646052/… 此外,在不检查逻辑的情况下简单地删除所有保留和释放不是一个好主意。 ARC 可能会过早发布。
  • 不要手动修改库,这会给你带来麻烦。按照 borrrden 的链接以文件为基础禁用 ARC。
  • 我刚刚尝试使用 -fno-objc-arc 禁用原始库的 ARC,但结果仍然相同。它在第二次尝试时崩溃了。

标签: ios xcode compiler-errors exc-bad-access


【解决方案1】:

[Not A Type retain] 表示您将一个不是 UIImage 的对象传递给 UIImageView 的 image 属性,然后该方法尝试识别它的类型以在 imagevVew.image = image 行发送保留。 NSLog 类型为NSLog("%@", NSStringFromClass([image class]));

编辑:我建议您将这样一个旧项目转换为 ARC(我引用:“它与 ios 2.1 相关联”)。使用链接器标志 -fno-objC-arc 并为与该项目相关的每个文件禁用 ARC。然后,检查你的 imageView 是否时髦,尝试将你的 image 设置为 nil,或者完全删除该行并运行。

【讨论】:

  • 感谢您的回复,我试过 NSLog("%@", NSStringFromClass([image class]));我在崩溃前从控制台收到了 UIImage 类型。这意味着它将 UIImage 发送到 UIImageView。
  • 你是否以任何方式桥接它的类型?
【解决方案2】:

条码引擎可能未启用 ARC。

要禁用一些不是为 ARC 支持而设计的文件,我们可以向编译器显示通过此命令禁用 ARC

-fno-objc-arc

将此命令放在所有编译源都存在的项目构建阶段(即项目名称中的所有类都将显示)

ZBarSDK 非常简单易用,功能更强大的条码API,二维码解码。

【讨论】:

  • 我曾尝试使用 -fno-objc-arc 但它不起作用。之前试过ZBarSDK,很简单但是不支持DataMatrix。
猜你喜欢
  • 2011-09-03
  • 2023-02-17
  • 1970-01-01
  • 2018-06-09
  • 2013-07-03
  • 2019-11-16
  • 2011-10-30
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多