ios – 特定于版本的预处理器宏

ios – 特定于版本的预处理器宏,第1张

概述我有一个预处理器命令,用于检测iOS的版本并支持或不支持iCloud.我想知道的是,如果像这样的宏: #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 //stuff#endif 如果有iOS 4.x的人从应用程序商店下载应用程序,但它是在iOS 5.x上编译的,那么这项工作是否有效 由于这将在编译时评估是在设备上编译的应用程序或如何工作?是否有更 我有一个预处理器命令,用于检测iOS的版本并支持或不支持iCloud.我想知道的是,如果像这样的宏:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000    //stuff#endif

如果有iOS 4.x的人从应用程序商店下载应用程序,但它是在iOS 5.x上编译的,那么这项工作是否有效

由于这将在编译时评估是在设备上编译的应用程序或如何工作?是否有更好的方法来获得相同的结果?

解决方法 你不能使用宏.宏在编译时进行评估,而不是在运行时进行评估,这是您想要的功能/功能检测,例如iCloud支持. (否则你最终会启用它,因为你在所有情况下都在编译iOS 5 SDK)

您应该只测试普遍性方法的存在,它告诉您是否可以调用它们,它告诉您是否支持iCloud,例如:

if ([[NSfileManager defaultManager] respondsToSelector:@selector(isUbiquitousItemAtURL:)])    {    // call it and do other iCloud stuff}

快速跟进说明:关于编译的问题.编译是将实际代码转换为在设备上运行的二进制文件的过程.当您在Xcode中构建Build时会发生这种情况,它只发生在您的计算机上,而不会发生在Apple或设备上.这就是为什么版本号的编译时检查不起作用的原因 – 当你将它发送到设备时,就已经做出了决定.

总结

以上是内存溢出为你收集整理的ios – 特定于版本的预处理器宏全部内容,希望文章能够帮你解决ios – 特定于版本的预处理器宏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存