AFNetworking - 可以在32位架构中轻松使用这个64位库吗?

时间:2012-04-10 14:48:30

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

所以我正在尝试将 AFNetworking 库用于我想在2006 Macbook上构建的项目上的REST服务。 Macbook是2006年的第一代32位Core Duo w /雪豹。

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

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

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

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

NSWindow * _window;

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

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

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

我想我在这里希望的是有一些我可以添加的编译器标志,可以一次性解决这个问题吗?但我猜我运气不好,现在只是浪费时间来捣毁这款Macbook,然后选择一款新的现代Macbook。

1 个答案:

答案 0 :(得分:2)

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

我不确定是不是很难以丢失你的计算机...也就是说,现代运行时提供的便利对开发人员来说非常诱人,而且你不太可能看到很多新的代码继续保持对32位Mac的支持。 Apple仅在短时间内销售32位Intel Mac,而Lion需要64位Mac,因此使用32位Mac的用户比例已经相当小,而且越来越小。