zoukankan      html  css  js  c++  java
  • Get Rid of NSCachedURLResponse's Encoding Methods Warning

    Before xcode 4.3 we can use this to encode and decode NSCachedURLResponse:

    @implementation NSCachedURLResponse (NSCoder)

    - (void)encodeWithCoder:(NSCoder *)coder {

         // TODO: 

    }

     

    - (id)initWithCoder:(NSCoder *)coder {

         // TODO: 

    }

    @end

    But in xcode 4.3, it will cause a warng.

    There are two methods to avoid the warning.

    One:

    ref, https://github.com/rs/SDURLCache/pull/29

    Two:

    @interface NSCachedURLResponse (ABC)

    + (void)swapMethods;

    - (id)myInitWithCoder:(NSCoder *)aCoder;

    - (void)myEncodeWithCoder:(NSCoder *)aCoder;

    @end

     

     

    #include <objc/objc.h>

    #import <objc/runtime.h>

    #import <objc/message.h>

     

    void SwapMethods(Class cls, SEL originalSel, SEL newSel) {

        Method originalMethod = class_getInstanceMethod(cls, originalSel);

        Method newMethod = class_getInstanceMethod(cls, newSel);

        method_exchangeImplementations(originalMethod, newMethod);

    }

     

     

    @implementation NSCachedURLResponse (ABC)

    + (void)swapMethods {

        Class tempClass = [NSCachedURLResponse class];

        SwapMethods(tempClass, @selector(initWithCoder:), @selector(myInitWithCoder:));

        SwapMethods(tempClass, @selector(encodeWithCoder:), @selector(myEncodeWithCoder:));

    }

    - (id)myInitWithCoder:(NSCoder *)aCoder {

         // TODO: 

    }

    - (void)myEncodeWithCoder:(NSCoder *)aCoder {

        // TODO: 

    }

    @end

  • 相关阅读:
    FR #3题解
    L3-005. 垃圾箱分布
    L2-004. 这是二叉搜索树吗?
    L2-002. 链表去重
    L1-009. N个数求和
    L3-003. 社交集群
    L3-004. 肿瘤诊断
    L2-001. 紧急救援
    L3-002. 堆栈
    L2-007. 家庭房产
  • 原文地址:https://www.cnblogs.com/Proteas/p/2735590.html
Copyright © 2011-2022 走看看