#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 – 特定于版本的预处理器宏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)