苹果有一个例子MailComposer,说的是在高版本的OS中调用新增的功能,并且在低版本的OS中依然能够运行。其中重要的一点就是weak link MessageUI.framework。

如何weak link呢?例子中没有明确说明。我搜了很久,没有发现。最后还是无意中找到了。

方法:

在XCode左面的Groups & Files中依次展开Targets, <YourApp>, Link Binary With Libraries,注意,不要点任何一个framework,而是,选中他们的父节点“Link Binary With Libraries”,这时候,你会在右上方的列表中发现有一列叫“Role”,把你需要Weak link的framework的Role设为Weak。

在这里,我们顺便回忆一下如何调用weak linked framwork中的对象。

在MailComposer这个例子中,我们加入MessageUI.framework,并且设置Weak link。然后引用头文件

#import <MessageUI/MessageUI.h>

#import <MessageUI/MFMailComposeViewController.h>

让MailComposerViewController继承MFMailComposeViewControllerDelegate,在某个方法中创建对象:

Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));

if (mailClass != nil)

{

//iOS 3.0,call methods

if ([mailClass canSendMail])

...

}

else

{

//iOS 2.x

}

具体代码见: http://developer.apple.com/iphone/library/samplecode/MailComposer/Introduction/Intro.html

PS. 判断一个类是否存在某个方法:

if ([NSClassFromString(@"UIImagePickerController") instancesRespondToSelector:@selector(isFlashAvailableForCameraDevice:)])

转载于:https://www.cnblogs.com/vinceoniphone/archive/2010/07/05/1771282.html

如何weak link一个framework (高版本兼容低版本)相关推荐

  1. IE高版本兼容低版本

    IE版本为11,而项目只支持低版本的IE6,7等,这就造成了页面显示出现很多问题. 将IE设置为兼容性模式后,即可正常显示. IE兼容性模式设置: 打开浏览器,点击工具--兼容性视图设置 添加需要访问 ...

  2. 3dmax高版本转低版本插件_Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器...

    兼容低版本Android浏览器,请大家及时更新. Fundebug前端BUG监控服务 Fundebug是专业的程序BUG监控平台,我们JavaScript插件可以提供全方位的BUG监控,可以帮助开发者 ...

  3. 兼容低版本IE浏览器的一些技巧分享

    前言: 近期工作中,突然被要求改别人的代码,其中有一项就是兼容IE低版本浏览器,所以优雅降级吧. 我相信兼容低版本IE是许多前端开发的噩梦,尤其是改别人写的代码,更是痛不欲生. 本文将介绍一些本人兼容 ...

  4. [转]AppCompat 22.1,Goole暴走,MD全面兼容低版本

    AppCompat 22.1,Goole暴走,MD全面兼容低版本 分类: Android2015-04-24 09:48 1354人阅读 评论(0) 收藏 举报 android 目录(?)[+] 武侠 ...

  5. android 兼容包(可兼容低版本系统)

    android 兼容包(可兼容低版本系统) 高Level为了兼容低Level版本,从而推出了兼容包android-support-v* 目前发现的只有三个 android-support-v4   a ...

  6. 【CSS】清除浮动 ③ ( 清除浮动 - 使用 after 伪元素 | 语法简介 | 兼容低版本浏览器 | 原理分析 )

    文章目录 一.清除浮动 - 使用 after 伪元素 ( 最流行写法 ) 1.额外标签法 和 overflow 样式法弊端 2.after 伪元素清除浮动简介 3.after 伪元素清除浮动核心代码 ...

  7. 高版本转低版本_Tekla高版本模型转低版本模型插件

    网上搜到的一个高版本转低版本模型的插件,只能转模型,图纸不能转.export import是一个简单的程序,能够将Tekla结构模型导出/导入到XML文件中.主要目的是将Tekla模型从新版本转换为旧 ...

  8. android 沉浸式状态栏 兼容低版本,详解Android沉浸式实现兼容解决办法

    自android5.0开始,沉浸式状态栏似乎成为一种潮流,应用里缺少沉浸式总感觉少些什么.于是乎,我开始到处找如何兼容低版本的沉浸式,由于Android平台跨度问题,总遇到一些不如人意的问题.终于,皇 ...

  9. vue 检测ie版本_Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案

    Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案 解决方式:安装 "babel-polyfill" 即可. 命令:npm install --save-dev ...

最新文章

  1. OpenCASCADE可视化:3D演示之3D视图设施
  2. [Sdoi2010]古代猪文
  3. Java ——异常处理
  4. 编译 Linux2.6 内核总结【ZT】
  5. python qt designer 重定向_[Python自学] PyQT5-QTDesigner中关联信号和槽
  6. Structs2-基础
  7. Dialog dismiss 流程
  8. elementui实现表格单选功能
  9. Qt导出数据到excel
  10. 2.4.2 小型机状态
  11. 人工智能意念控制打字_智能打字稿批量属性分配
  12. 解决猫盘x3p无法登录的问题
  13. Qt软件开发文档20----Qt语言翻译家
  14. MATLAB基础知识——范数求解函数norm
  15. OpenLayers之 OverLay问题汇总
  16. 海森矩阵和雅克比矩阵的区别
  17. 【翻译】TypeScript: Documentation - Narrowing
  18. 微信小程序 发布新版本后 强制升级
  19. STC8G1K08A 串口无法烧录程序
  20. python金融量化初体验——2020年“大湾区杯”金融数学建模比赛A题《大湾区指数增强策略》刷题总结(持续更新中)

热门文章

  1. [郑重声明]木草山人编码的习惯
  2. vue如何取消下拉框按回车自动下拉_如何用大白菜重装系统|大白菜怎么重装系统教程详解...
  3. 【算法】剑指 Offer 56 - II. 数组中数字出现的次数 II 【重刷】
  4. 【Flink】 Flink 应用资源分配问题排查思路
  5. 95-872-055-源码-CEP-Pattern API
  6. 95-40-050-java.util.concurrent-CopyOnWriteArraySet
  7. SpringBoot : 注解@Resource
  8. maven-shade-plugin插件将项目打成可执行的jar包
  9. Current HIVE_LIB is not valid, please export HIVE_LIB='YOUR_LOCAL_HIVE_LIB'
  10. 【java】深入探讨 Java 类加载器