gpt4 book ai didi

objective-c - 如何访问 iOS 中的弱链接框架?

转载 作者:可可西里 更新时间:2023-11-01 05:06:50 25 4
gpt4 key购买 nike

我想使用适用于 iOS 5 的 Twitter 框架,但能够在旧操作系统中运行我的应用程序。

我在 Xcode 4.2 目标设置中添加了弱引用框架(即设置“可选”标志)。 Base SDK 是 iOS 5,iOS 部署目标是 iOS 3.2。

接下来,我尝试使用 Twitter 框架:

#import <Twitter/Twitter.h>
...
Class twClass = NSClassFromString(@"TWTweetComposeViewController");
if (!twClass) // Framework not available, older iOS
{
[self shareWithTwitterPriorIOS5];
return;
}

if ([TWTweetComposeViewController canSendTweet]) // Check if twitter is setup and reachable
{
TWTweetComposeViewController* twc = [[TWTweetComposeViewController alloc] init];
// [twc addURL:[NSURL URLWithString:@"http://mail.ru"]];
// [twc addImage:[UIImage imageNamed:@"Some image.png"]]
[twc setInitialText:textToShare];
[viewController presentViewController:twc animated:YES completion:^{
// Optional
}];
[twc release];
// Assume twc is ARC released or call [twc release];
}
else
{

// Twitter account not configured, inform the user
}

它在 iOS 5 模拟器上运行良好。一旦我尝试使用具有旧操作系统版本的模拟器或真实设备,我就会收到错误消息“Twitter/Twitter.h”找不到文件(在编译时)。如果我删除“#import”指令,我会收到一些错误 TWTweetComposeViewController class not found。

如果我注释所有与 Twitter 相关的代码,我会收到链接器错误:“ld: framework not found Twitter”。 ld命令导致的错误:

Ld /Users/mikhailkeskinov/Library/Developer/Xcode/DerivedData/Dictionary-eiyrziajmltuglfzgtnjxffkojwi/Build/Products/Debug-iphoneos/Dictionary.app/Dictionary normal armv6
cd /Developer/WorkShop/XDictionary/trunk
setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk -L/Users/mikhailkeskinov/Library/Developer/Xcode/DerivedData/Dictionary-eiyrziajmltuglfzgtnjxffkojwi/Build/Products/Debug-iphoneos "-L/Developer/WorkShop/XDictionary/trunk/Dictionary/Twitter+OAuth/Libraries & Headers" -F/Users/mikhailkeskinov/Library/Developer/Xcode/DerivedData/Dictionary-eiyrziajmltuglfzgtnjxffkojwi/Build/Products/Debug-iphoneos -filelist /Users/mikhailkeskinov/Library/Developer/Xcode/DerivedData/Dictionary-eiyrziajmltuglfzgtnjxffkojwi/Build/Intermediates/Dictionary.build/Debug-iphoneos/Dictionary.build/Objects-normal/armv6/Dictionary.LinkFileList -dead_strip -miphoneos-version-min=3.2 -lxml2 -framework AVFoundation -framework UIKit -framework Foundation -framework CoreGraphics -lOAuth -weak_framework Twitter -o /Users/mikhailkeskinov/Library/Developer/Xcode/DerivedData/Dictionary-eiyrziajmltuglfzgtnjxffkojwi/Build/Products/Debug-iphoneos/Dictionary.app/Dictionary

这里有什么问题?

最佳答案

5 小时后,大量愚蠢的文档阅读器、更改所有目标和项目设置等。我至少找到了解决方案。当您知道时,事实证明这很容易。也许,我的回答会挽救某些人的一天。

enter image description here

如您所见,实际设备目标(“mkeskinov 的 iPod”)增加了一倍。我从不注意这个事实。看起来它只是因为一些错误而翻了一番,但事实并非如此。如果您选择“Product\Edit Schemes”并打开 Destination 列表(在窗口顶部),您可以清楚地看到不同之处:

enter image description here

要为真实设备成功编译应用程序,我需要做什么 - 只需选择第二个选项。它将针对 iOS 5 进行编译,然后在装有 OS 4 的真实设备上运行。第一个选项意味着它将针对 iOS 4 进行编译,如果您有任何对 Frameworks 的引用,iOS 4 中没有(没关系,弱引用或强) - 你得到编译时错误。

关于objective-c - 如何访问 iOS 中的弱链接框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com