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。

     

     

  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/rollrock/p/3775422.html
Copyright © 2011-2022 走看看