美文网首页
博客技术汇总

博客技术汇总

作者: 一块豆腐 | 来源:发表于2017-06-14 20:14 被阅读17次

废土博客

目录


如何在低版本调用高版本的API,同时完全不影响高版本API的功能


<h3 id="1">如何在低版本调用高版本的API,同时完全不影响高版本API的功能</h3>

要满足高版本API能够在低版本调用的必要条件就是自己实现低版本API中没有的实现,那么如何实现呢。
在OC中扩展一个已有类一般有两种方法: SubclassCategory。显然在这里使用Category会比较合适
下面举个例子NSOperation 类有一个属性 name,这个属性是NS_AVAILABLE(10_10, 8_0)

+ (void)load
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Class class = [self class];
        
        SEL nameSEL = @selector(name);
        SEL setNameSEL = @selector(setName:);
        
        Method nameMethod = class_getInstanceMethod(class, nameSEL);
        Method setNameMethod = class_getInstanceMethod(class, setNameSEL);
        
        if (!nameMethod)
        {
            SEL xxxNameSEL = @selector(xxx_name);
            Method xxxNameMethod = class_getInstanceMethod(class, xxxNameSEL);
            class_addMethod(class, nameSEL, method_getImplementation(xxxNameMethod), method_getTypeEncoding(xxxNameMethod));
        }
        
        if (!setNameMethod)
        {
            SEL xxxSetNameSEL = @selector(xxx_setName:);
            Method xxxSetNameMethod = class_getInstanceMethod(class, xxxSetNameSEL);
            class_addMethod(class, setNameSEL, method_getImplementation(xxxSetNameMethod), method_getTypeEncoding(xxxSetNameMethod));
        }
    });
}
- (NSString*)xxx_name
{
    return objc_getAssociatedObject(self, @"name");
}

- (void)xxx_setName:(NSString*)name
{
    objc_setAssociatedObject(self, @"name", name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

相关文章

  • 技术博客汇总

    关于我的博客大汇总整理 目录介绍 Java博客大汇总01.Java基础02.面向对象03.数据结构04.IO流知识...

  • 博客技术汇总

    废土博客 目录 如何在低版本调用高版本的API,同时完全不影响高版本API的功能 如何在低版本调用高版本的API,...

  • 技术博客汇总

    https://www.zhihu.com/question/37116938

  • 技术博客汇总

    闲来无事把比较好的技术博客整理一下,方便查看,喜欢的支持一下。谢谢!! OneV's Den http://o...

  • 技术博客汇总

    对微信公众号接口的单元测试 Github与Travis CI测试与部署 Django单元测试 NodeJs单元测试...

  • 国外技术博客汇总

    1.stackoverflowhttps://stackoverflow.com/ 众所周知,stackoverf...

  • Android技术博客汇总

    Kotlin Kotlin学习资料汇总 http://www.apkbus.com/blog-261991-680...

  • 09.Java数据算法

    好消息 博客笔记大汇总【15年10月到至今】,包括Java基础及深入知识点,Android技术博客,Python学...

  • 【新版】Android技术博客精华汇总

    【新版】Android技术博客精华汇总(原文链接内持续更新) http://www.apkbus.com/thre...

  • iOS-综合类型相关

    综合类型涵盖学习资源、博客、Demo地址、个人总结、软件等. 1.iOS学习资源汇总(开源项目、第三方库、技术博客...

网友评论

      本文标题:博客技术汇总

      本文链接:https://www.haomeiwen.com/subject/lhseqxtx.html