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。

 

 

你可能感兴趣的:(ios)