在 OS X下创建一个Command Line Tool工程,
用类别的方法继承与NSArray,代码如下:
#import <Foundation/Foundation.h>
@interface NSArray (Swizzle)
- (id)myLastObject;
@end
#import "NSArray+Swizzle.h"
---------------------------------------------------------------------------------------------------
@implementation NSArray (Swizzle)
- (id)myLastObject{
id ret=[self myLastObject];
NSLog(@"********myLastObject ************");
NSLog(@"********myLastObject*************");
return ret;
}
@end
在main.m中写如下代码:-------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
#import "NSArray+Swizzle.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Method ori_Metod= class_getInstanceMethod([NSArray class], @selector(lastObject));
Method my_Method=class_getInstanceMethod([NSArray class], @selector(myLastObject));
method_exchangeImplementations(ori_Metod, my_Method);
//IMP--关键字
NSArray *array=@[@"0",@"1",@"2",@"3"];
NSString *string=[array lastObject];
//NSString *string=@"asd";
NSLog(@"TEST RESULT:%@",string);
}
return 0;
}
------------------------------------------------------------------------如下打印结果
2015-10-16 16:26:09.244 TestOneHook[15121:1192366] ********myLastObject ************
2015-10-16 16:26:09.244 TestOneHook[15121:1192366] ********myLastObject*************
2015-10-16 16:26:09.245 TestOneHook[15121:1192366] TEST RESULT: 3