【问题标题】:AFNetworking - Possible to easily use this 64 bit libraries in 32 bit architecture?AFNetworking - 可以在 32 位架构中轻松使用这个 64 位库吗?
【发布时间】:2012-04-22 21:00:26
【问题描述】:

所以我正在尝试在我想在我的 2006 Macbook 上构建的项目中使用 AFNetworking 库来提供 REST 服务。 Macbook 是第一代 2006 年 32 位酷睿双核 w/雪豹。

我是 Objective-C 开发的新手,我正在按照教程开始使用 AFNetworking:https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking

使用 xcode 4.2 我的问题是,当我创建一个新项目并尝试构建时,我立即得到:语义问题 - 合成属性“窗口”必须与兼容的 ivar 命名相同或必须明确命名伊瓦尔

我检查了我的新项目的构建设置,由于某种原因,当我的机器是 32 位时,xcode 默认假定 64 位英特尔架构?!诡异的。我将它换成 32 位,这就是错误出现的地方。

所以我现在可以通过以下方式在 AppDelegate 中显式创建我自己的窗口实例变量来纠正这个语义问题:

NSWindow * _window;

我在构建 32 位 objc 时读到了这个: Synthesizing a property without instance variables 在我看到的许多公共 github 项目代码中似乎很常见(缺少 ivar 声明)。现在是每个人都在强迫我们使用 64 位,还是只是懒得创建实例变量? :(

所以我的问题是 AFNetworking 库似乎是为 64 位英特尔构建的,因为当我将 AFNetworking 添加到我的项目时,我得到了 same 语义问题 ivar 错误。查看库代码,在代码中没有为任何属性声明显式实例变量。

我在这里完全搞砸了吗?我可以通过为所有属性手动创建实例变量来解决这种情况,但这对于长期的项目维护来说会很痛苦。

我想我希望这里有某种编译器标志,我可以添加它来一次性解决所有问题??但我猜我运气不好,现在是时候扔掉这台 Macbook 并买一台新的现代笔记本了。

【问题讨论】:

    标签: objective-c macos osx-snow-leopard 32bit-64bit afnetworking


    【解决方案1】:

    自动合成的实例变量需要“现代”Objective-C 运行时,该运行时仅在 64 位机器上可用。所以,不幸的是你是正确的,你不能只设置一个编译器标志来解决这个问题。解决方案确实是为您尝试使用的类中的属性添加实例变量声明。

    我不确定这是否值得扔掉你的计算机......也就是说,现代运行时提供的便利对开发人员来说非常诱人,而且你不太可能看到很多新代码继续保持对 32 位 Mac 的支持。苹果在短时间内只卖了 32 位的 Intel Mac,而 Lion 需要 64 位的 Mac,所以使用 32 位 Mac 的人比例已经很小了,而且还在迅速减少。

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 1970-01-01
      • 2014-11-25
      • 2011-11-01
      • 2019-08-20
      • 2012-07-23
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多