///////////////////////////////////////////////////////////////////////////////////////////////////
#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 Swizzle(hook)