runtime函数详解
来源:互联网 发布:linux 实现文件服务器 编辑:程序博客网 时间:2024/05/04 17:09
Class class = objc_allocateClassPair([NSObject class], "Cat", 0); class_addIvar(class, "name", sizeof(id), log2(sizeof(id)), @encode(id)); class_addMethod(class, @selector(test), (IMP)&test, "v@:");//type必须跟实际类型相符v代表void @代表self :代表SEL objc_registerClassPair(class); id cat = [[class alloc] init]; [cat setValue:@"hehe" forKey:@"name"]; NSString *name = [cat valueForKey:@"name"]; [cat performSelector:@selector(test)];void test(id self, SEL _cmd) { NSLog(@"test------");}
总结:
1.设置完类之后别忘了调用objc_registerClassPair(class)
2.从class_addMethod就可以看出imp就是函数指针,test是函数实现,加上&, &test就是函数指针了
3.定义函数时一定加上两个默认变量id self, SEL _cmd,否则无效。
4.引入头文件
#import <objc/runtime.h>
#import <objc/message.h>
5.方法常用的前缀,记住它然后看提示就行了
objc_
object_ 这个别露了
ivar_
method_
sel_
imp_
6.method的type
- (void)method1:(NSString *)name arg1:(int)age arg2:(NSString *)arg2;用 method_getTypeEncoding 对应的是 v36@0:8@16i24@28
把其中的数字去掉就是 v@:@i@
v代表void
@代表id(self)
:代表SEL(_cmd)
i代表int(age)
@代表NSString*(arge2)
v36@0:8@16i24@28
0 0
- runtime函数详解
- Runtime详解
- runtime详解
- runtime 详解
- runtime详解
- Runtime详解
- runtime详解
- runtime 详解
- runtime 详解
- RunTime详解-------
- Runtime详解
- runtime详解
- runtime详解
- C Runtime Library详解
- 详解Objective-C runtime
- 详解Objective-C runtime
- 详解Objective-C runtime
- 详解Objective-C runtime
- 关于用jquery给select赋值的问题
- 揭秘在ListView等AdapterView上动态添加删除项的陷阱
- 二分笔记
- 项目3(1)
- Hive 正则表达式使用 与 匹配中文
- runtime函数详解
- Java 类加载时机和顺序
- 【读书笔记《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)
- OpenCV 旋转向量与旋转矩阵转化(罗德里格斯 )
- Android eclipse开发NDK提示的问题
- 打开串口类软件出现安装datasocket.msi,解决方案
- android 使用MaskFilter面具工具介绍
- ubuntu下设置开机自启动项
- 用caffe训练好的lenet_iter_10000.caffemodel测试单张mnist图片