Mac App Store:放弃 32 位支持转而支持 ARC,32 位版本的现有用户会看到更新消息吗?
我正在考虑放弃 32 位支持,转而支持自动引用计数(仅支持 64 位二进制文件)。
我希望通过 Mac App Store 避免出现这两种情况:
对于 旧 32 位 Mac 用户:
购买了支持 32 位的先前版本的人:他们会在 Mac App Store 中看到该应用程序的更新消息吗?如果是这样,(现在仅限 64 位)更新对他/她不起作用。
以前没有购买过该应用程序的人:尽管该应用程序无法在他们的系统上运行,他们是否能够购买该应用程序?
编辑: 我发现有人能够将仅限 64 位的应用程序下载到 32 位 MacBook 上,但却收到一条错误消息“您的购买无法完成”。在这种情况下,它是一个免费的应用程序。我想知道付费应用程序何时会弹出此消息(付款之前或之后)。
I'm considering dropping 32-bit support for in favor for Automatic Reference Counting (which is only supported for 64 bit binaries).
I'd like to avoid these two scenarios with the Mac App Store:
For a user of an old 32-bit Mac:
who did purchase the previous version with 32-bit support: Will they see an update message for the app in the Mac App Store? If so, the (now 64 bit only) update would not work for him/her.
who has not purchased the app before: will they be able to purchase the app although it will not run on their system?
ARC 64 bit only:
http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226
EDIT:
I found one occasion of somebody being able to download a 64 bit only app to a 32 bit MacBook and being presented with an error message "Your purchase could not be completed". In this case it was a free app. I wonder when this message would pop up for a paid app (before or after the payment).
http://www.linethirteen.com/blog/2011/01/mac-app-store-32-bit-vs-64-bit/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我还发现 ARC 需要 64 位处理器。然而,我设法构建了一个胖二进制文件,其中 64 位版本使用 ARC,32 位版本使用垃圾收集器。为此,我必须执行以下操作:
lipo
从两个目标中的二进制文件组装一个 fat 二进制文件两个目标使用相同的源,但需要一些
#ifdef __OBJC_GC__
语句。为了向后兼容,我确实不得不放弃合成的 ivars :(I've also found out that ARC requires 64bit processors. However, I managed to build a fat binary where the 64bit version uses ARC and the 32bit version uses the garbage collector. To do this I had to do the following:
lipo
to assemble a fat binary from the binaries in the two targetsBoth targets use the same source, but a few
#ifdef __OBJC_GC__
statements were necessary. I did have to give up synthesized ivars for backward compatibility :(我不知道 App Store 会做什么(无论如何,它可能会发生变化),但如果应用程序确实交付给 32 位客户,您可以通过以下方式解决该问题:
然后,您将拥有一个通用二进制文件(或“胖二进制文件”),它是 64 位计算机上的实际应用程序,以及 32 位计算机上的“请升级您的 Mac”应用程序。
I don't know what App Store will do (and it's probably subject to change, anyway), but if the app does get delivered to 32-bit customers, you can work around the problem in this way:
lipo
in a shell script phase in the first target to assimilate the 32-bit binary into the 64-bit binary.You'll then have a Universal Binary (or “fat binary”) that is your real application on 64-bit machines, and the “please upgrade your Mac” application on 32-bit machines.