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

2023-12-28

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

我在 Xcode 4.2 Target 设置中添加了弱引用框架(即设置“可选”标志)。基础 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 类未找到。

如果我评论所有与 Twitter 相关的代码,则会收到链接器错误:“ld:未找到 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 小时后,大量愚蠢的文档阅读器,更改所有目标和项目设置等。我至少找到了解决方案。当你知道的时候,事实证明这很容易。也许,我的回答会拯救某人的一天。

正如您所看到的,真实设备目标(“mkeskinov 的 iPod”)增加了一倍。我从来不注意这个事实。看起来好像只是由于某些错误而翻倍了,但事实并非如此。如果您选择“产品\编辑方案”并打开目标列表(位于窗口顶部),您可以清楚地看到差异:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何访问iOS中的弱链接框架? 的相关文章

随机推荐

  • 关于 iPhone/iPad 放弃构建行为的非常棘手的问题

    事情是这样的 设想 我得到了一个 ipa 文件 这是存档 共享过程的结果 使用 XCode ipa 文件使用临时分发证书进行签名 并且 它可以毫无问题地安装 应用程序在钥匙串中保存一些信息 使用我刚刚制作的构建可以毫无问题地访问它 之后 我
  • gcc -Wshadow 太严格?

    在以下示例中 class A public int len void setLen int len len len warning at this line private int len gcc 与 Wshadow 发出警告 main c
  • 从 HTML 生成 Emmet 代码 - 反向操作

    我说的是 Emmet io 以前的 Zen Coding 是否有 JavaScript 代码或 jQuery 插件可以反向执行此操作 Example emmet ul gt li 3 gt ul li li li li li li ul 我
  • bash 稳健性:为了“退出时”清理例程的目的,什么是正确且可移植的陷阱方法?

    当我创建想要在脚本退出时删除的临时文件时 我通常会在 EXIT 上设置陷阱 像这样的东西 function cleanup if d mytmp then rm rf one file system mytmp fi trap cleanu
  • 检查字符串是否至少包含 10 个数字、12 个大写字母和 20 个小写字母

    至少有 10 个数字 12 个大写字母和 10 个小写字母的正则表达式可能是什么 该字符串可以以上述任何一个开头 并且可以是随机的 放置 例如 AB12jgGGfWisLWfoi34R32SgD42DSf3453jfh I used d d
  • 省略空自定义类型的 JSON

    我正在尝试为可能的情况编写一个自定义封送拆收器nil数据库类型 它的结构与sql NullFloat64 type type NullFloat64 sql NullFloat64 func ni NullFloat64 MarshalJS
  • React Native 键盘白色闪烁

    在我的 React Native 应用程序中显示和隐藏键盘时 键盘所在的位置会出现白色闪烁 请参阅以下内容 https photos app goo gl Bwmin9T1R4OAO9tB3 https photos app goo gl
  • Spring @ExceptionHandler 不适用于 @ResponseBody

    我尝试为rest 控制器配置一个spring 异常处理程序 该控制器能够根据传入的accept 标头将映射渲染到xml 和json 它现在抛出 500 servlet 异常 这有效 它获取了 home jsp ExceptionHandle
  • 向 python 对象添加新的成员变量?

    我已经开始阅读 Magnus Lie Hetland 的 Beginning python from novice to professional 今天让我印象深刻的是对象创建新成员变量的能力 即使这些成员变量不存在于该对象所在的类中被 创
  • 使用 wpf 中的自定义 TextElement 扩展 FlowDocument

    我想通过创建我自己的 Span 和 Run 衍生产品来扩展 FlowDocument 的功能 这可能吗 有人找到任何例子吗 微软没有公开渲染自定义所需的方法文本元素 http msdn microsoft com en us library
  • WildFly (JBoss) 下的 JTDS 模块

    我正忙着从 JBoss 7 1 1 升级到 Wildfly 8 0 0 Beta1 我在 JBoss 下使用 JTDS 数据库驱动程序没有问题 但它在 WildFly 下无法工作 我已经创建了 net sourceforge jtds ma
  • Pycharm - 在调试器中启用自动换行

    例如 在 Pycharm 2017 3 的调试器中 当我打印一本大字典时 它全部在一行上 我希望这本词典能够换行 这样我就可以看到更多内容 我相信以前版本的 PyCharm 具有这种包装行为 我查看了设置 只能找到编辑器的自动换行 For
  • 如何知道MKMapView的visibleMapRect是否包含坐标?

    如果我有 MKMapView 和 CLLocationCooperative2D 如何测试地图的可见区域是否包含坐标 最快的方法是使用内置的苹果功能 这将使此类事情变得超级快 if MKMapRectContainsPoint mapVie
  • 附加操作按钮在 Flask-admin 上不起作用

    我正在尝试向 Flask admin 表单添加一项操作 它必须增加评级 1 并且它适用于批量操作 但不适用于单个操作 请帮我找到这个错误 我花了很多时间试图让这个东西正常工作 这是代码 我在 templates 文件夹中制作了一个 html
  • 我可以更改 Azure Function Event Hub 触发器启动检查点吗?

    当我使用新的消费者组建立一个新的 Azure Function 来侦听我们的事件中心时 它会获取曾经发送到事件中心的所有消息 甚至是几个月前的消息 我认为将集线器上的消息保留设置为一天会限制这一点 但显然不是 不管怎样 我真的只希望新的 A
  • 收到“未安装 qmlscene”。 “Ubuntu”上“QT CREATOR”中的警告

    我将 QTStatic 添加到 QT 版本 但我无法使用此版本在套件选项卡中构建和设置 我上传了下面的屏幕截图 请帮助 版本选项卡屏幕截图 https i stack imgur com rpaGB jpg 套件选项卡屏幕截图 https
  • 如何在 Rails 视图中呈现所有评论?

    我是 Rails 新手 所以放轻松 我创建了一个博客 我已成功实施评论并将其附加到每个帖子中 现在 我想在侧边栏中显示所有帖子的最新评论列表 我认为这里涉及两件事 对comment controller rb的更新 然后是从实际页面的调用
  • postgresql - 替换文本字段中字符串的所有实例

    在 postgresql 中 如何替换数据库列中字符串的所有实例 假设我想替换所有实例cat with dog 例如 最好的方法是什么 你想使用 postgresql 的replace http www postgresql org doc
  • Ant 任务

    我现在看到 Ant 既有
  • 如何访问iOS中的弱链接框架?

    我想在 iOS 5 上使用 Twitter 框架 但能够在旧操作系统中运行我的应用程序 我在 Xcode 4 2 Target 设置中添加了弱引用框架 即设置 可选 标志 基础 SDK 是 iOS 5 iOS 部署目标是 iOS 3 2 接