Mac App Store:放弃 32 位支持转而支持 ARC,32 位版本的现有用户会看到更新消息吗?

发布于 2024-12-11 13:41:54 字数 1027 浏览 0 评论 0原文

我正在考虑放弃 32 位支持,转而支持自动引用计数(仅支持 64 位二进制文​​件)。

我希望通过 Mac App Store 避免出现这两种情况:

对于 旧 32 位 Mac 用户

  1. 购买了支持 32 位的先前版本的人:他们会在 Mac App Store 中看到该应用程序的更新消息吗?如果是这样,(现在仅限 64 位)更新对他/她不起作用。

  2. 以前没有购买过该应用程序的人:尽管该应用程序无法在他们的系统上运行,他们是否能够购买该应用程序?

仅 ARC 64 位: http://developer.apple.com/library/mac/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html#//apple_ref/doc/uid/TP40011226

编辑: 我发现有人能够将仅限 64 位的应用程序下载到 32 位 MacBook 上,但却收到一条错误消息“您的购买无法完成”。在这种情况下,它是一个免费的应用程序。我想知道付费应用程序何时会弹出此消息(付款之前或之后)。

http://www.linethirteen.com/blog/2011/01/mac-app-store-32-bit-vs-64-bit/" linethirteen.com/blog/2011/01/mac-app-store-32-bit-vs-64-bit/

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:

  1. 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.

  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆梦 2024-12-18 13:41:54

我还发现 ARC 需要 64 位处理器。然而,我设法构建了一个胖二进制文件,其中 64 位版本使用 ARC,32 位版本使用垃圾收集器。为此,我必须执行以下操作:

  • 设置使用 GC 的仅 32 位目标
  • 设置使用 ARC 的仅 64 位目标
  • 将 32 位目标添加为 64 位目标的依赖项
  • 使用 shell 脚本添加自定义构建阶段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:

  • set up a 32bit only target that uses GC
  • set up a 64bit only target that uses ARC
  • add the 32bit target as a dependency to the 64bit target
  • add a custom build phase with a shell script that uses lipo to assemble a fat binary from the binaries in the two targets

Both 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 :(

病毒体 2024-12-18 13:41:54

我不知道 App Store 会做什么(无论如何,它可能会发生变化),但如果应用程序确实交付给 32 位客户,您可以通过以下方式解决该问题:

  1. 将您的应用程序设为 64 位仅有的。
  2. 制作第二个仅 32 位的应用程序,除了显示警报消息外什么也不做。
  3. 将第二个应用程序中的所有资源构建到第一个应用程序中(即将它们添加到两个目标中)。
  4. 使第二个目标成为第一个目标的依赖项,并在第一个目标的 shell 脚本阶段使用 lipo 将 32 位二进制文​​件同化为 64 位二进制文​​件。

然后,您将拥有一个通用二进制文件(或“胖二进制文件”),它是 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:

  1. Make your app 64-bit only.
  2. Make a second app that is 32-bit only and does nothing but show an alert message.
  3. Build all of the resources from the second app into the first (i.e., add them to both targets).
  4. Make the second target a dependency of the first, and use 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文