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。

     

     

  • 相关阅读:
    按钮字体颜色的设置
    异常
    数据存储
    SQLiteOpenHelper
    MVC
    在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
    ListView 的优化方案
    fragment生命周期及优点
    ANR
    Android系统架构
  • 原文地址:https://www.cnblogs.com/rollrock/p/3775422.html
Copyright © 2011-2022 走看看