创建 iPhone 通用二进制文件时如何测试常量是否存在
我正在尝试创建一个通用二进制文件,它支持 iPhone 4 上的多任务处理,并且仍然可以在 iPad 上运行。
我知道如何通过使用 NSClassFromString 和“respondToSelector”检查类是否存在来避免不同版本的 iPhone IOS 的编译错误,但是有没有办法检查 UIBackgroundTaskInvalid 等常量是否存在?
我当然可以使用#IFDEF,但我想避免这种情况。
I am trying to create a universal binary that supports multitasking on the iPhone 4 and can still run on the iPad.
I know how to avoid compile errors for different versions of the iPhone IOS by checking if a class exists by using NSClassFromString and "respondToSelector", but is there a way to check for the existence of constants like UIBackgroundTaskInvalid?
I of course can use #IFDEF, but I want to avoid this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以按如下方式进行操作:
基本上您想要验证该变量的地址是否存在。
更新:需要明确的是,您实际上不能为此使用#ifdef,因为您将使用包含这些符号的 SDK 版本进行构建。
You do it as follows:
Basically you want to verify that the address of that variable exists.
Update: To be clear, you can't really use an #ifdef for this since you will build with a version of the SDK that contains the symbols.
测试您知道与常量关联的方法是否存在可能就足够了。
It's probably sufficient to test for the existence of a method that you know is associated with the constant.
检查多任务 iOS 的首选方法是查看 UIDevice 是否响应 isMultitaskingSupported,如下所示:
如果支持多任务,那么您可以使用那些与多任务相关的常量,您应该将其弱链接到。
The preferred method to check for multitasking iOS is to see if UIDevice responds to isMultitaskingSupported, like this:
If multitasking is supported then you can use those multitasking related constants, which you should have weak linked to.