Runtime的简单使用
来源:互联网 发布:linux 重新挂载根目录 编辑:程序博客网 时间:2024/06/02 21:19
有一个Person类
@interface Person : NSObject@property (nonatomic, copy) NSString * name;@property (nonatomic, copy) NSString * adress;- (NSString *)first;- (NSString *)second;@end
@implementation Person- (NSString *)first { NSLog(@"11111111"); return @"first";}- (NSString *)second { NSLog(@"222222222"); return @"second";}@end
self.person = [[Person alloc] init];self.person.adress = @"shanghai";self.person.name = @"xiaoming";
1.动态修改实例变量的值
unsigned int count = 0; Ivar * ivar = class_copyIvarList([self.person class], &count); for (int i = 0; i < count; i++) { Ivar var = ivar[i]; const char * varName = ivar_getName(var); NSString * name = [NSString stringWithUTF8String:varName]; if ([name isEqualToString:@"_name"]) { object_setIvar(self.person, var, @"是是是"); break; } } self.nameLab.text = self.person.name;
2.动态交换2个方法的实现
Method m1 = class_getInstanceMethod([self.person class], @selector(first)); Method m2 = class_getInstanceMethod([self.person class], @selector(second)); method_exchangeImplementations(m1, m2); //m1的实现被替换为m2的实现 NSString * firstReturn = [self.person first]; self.nameLab.text = firstReturn;
3.动态添加方法
class_addMethod([self.person class], @selector(guessAns), (IMP)guessAns, "v@:"); if ([self.person respondsToSelector:@selector(guessAns)]) { [self.person performSelector:@selector(guessAns)]; } else { NSLog(@"gasfs"); } self.nameLab.text = @"5555";
添加的方法
void guessAns(id self, SEL _cmd) { NSLog(@"hello world");}
0 0
- Runtime的简单使用
- Runtime的简单使用
- RunTime的运行机制简单使用
- ios-Runtime的简单使用
- iOS之runtime的简单使用
- java中runtime的简单使用
- iOS简单runtime封装fmdb的使用
- IOS runtime简单使用
- runtime简单使用
- runtime简单使用
- Runtime的简单应用
- runtime的简单介绍
- runtime的简单理解
- runtime 简单的介绍
- Runtime运行时的简单使用,字典转模型
- iOS开发之深入探讨runtime机制02-runtime的简单使用
- Runtime类的使用
- Runtime 类的使用
- Dubbo学习
- css3loading状态3
- OCR备份与恢复
- 隐藏jQuery Dialog的关闭图标
- Android 设置Toast的位置
- Runtime的简单使用
- 关于bigfile表空间
- 字体界的黑科技!输入数字立刻生成酷炫信息图的字体
- 工欲善其事,必先利其器
- 第十六周项目1—阅读程序(1)
- Filter/Listener简介
- 知识体系
- 【一天一道LeetCode】#97. Interleaving String
- Unity Editor编程杂记