zoukankan      html  css  js  c++  java
  • IOS Swizzle(hook)

    ///////////////////////////////////////////////////////////////////////////////////////////////////

    #import "NSArray+swizzle.h"

    @implementation NSArray (swizzle)

    -(id) myLastObject

    {

        id ret = [self myLastObject];

        NSLog(@"-----myLastObject-------");

        return ret;

    }

    @end

    ////////////////////////////////////////////////////////////

    #import "NSArray+swizzle.h"

    #import <objc/runtime.h>

     

        Method ori = class_getInstanceMethod([NSArray class], @selector(lastObject));

        Method new = class_getInstanceMethod([NSArray class], @selector(myLastObject));

        method_exchangeImplementations(ori, new);

        

        NSArray * array = @[@"0",@"1",@"2",@"3"];

        NSString * str = [array lastObject];

        

        NSLog(@"str:%@",str);

     

    输出 

    -----myLastObject-------

    str:3

    解释:以上代码将lastObject与myLastObject。

    所以  [array lastObject]这句话调用的应该是  myLastObject,而在myLastObject里面调用myLastObject其实就是调用lastObject。

     

     

  • 相关阅读:
    2.2 整数表示
    2.1 信息存储
    c++ string.erase()函数的使用
    classmethod修饰符
    27. 序列化
    26. 操作文件目录
    Java 内部类
    ConcurrentHashMap 源码解析 -- Java 容器
    Storm中的LocalState 代码解析
    Java中 return 和finally
  • 原文地址:https://www.cnblogs.com/rollrock/p/3775422.html
Copyright © 2011-2022 走看看