我在尝试将一些特定于 iOS5 的库合并到同时针对 iOS5 和 iOS4.3 的应用程序时遇到了问题。我已经完成了以下步骤:
通过在“Link Binary with Libraries”中将其设置为可选来弱链接 Twitter 框架
使用`-framework Twitter.framework' 在其他链接器标志中将其添加为 iOS5.0 SDK 的框架
在类头中有条件地链接框架:
#if defined(__IPHONE_5_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0 #import <Twitter/Twitter.h> #import <Accounts/Accounts.h> #endif
然后在方法本身中,我会检查用户是否设置了 Twitter:
if ([TWTweetComposeViewController class]) { self.canTweet = [TWTweetComposeViewController canSendTweet]; }
这在 5.0 和 4.3 模拟器上都能很好地工作。但是,我在让它在实际设备上运行或存档时遇到了问题。
当我连接了运行 5.0 的 3GS 或运行 5.0 的 4 时,两者都在方案下拉列表中出现两次。选择最上面的一个,并尝试构建或运行项目失败,并出现 Use of unidentified identifier 'TWTweetComposeViewController'
错误。
使用第二个设备条目,构建失败并出现 ld: framework not found Twitter.framework
错误。
我确定这里缺少某些东西,但我很困惑。任何人都可以建议吗?
最佳答案
如果您使用的是一周链接,那么您必须首先检查 API 的可用性,使用
NSClassFromString、respondsToSelector、instancesRespondToSelector 等。
所以,改变你的 if 条件。首先尝试使用上面指定的运行时函数获取类对象。
这是一个链接,详细说明了如何执行此操作。
link
关于iphone - 为 iOS4.3 和 iOS5.0 构建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778104/