runtime
bian3-3-3
这个作者很懒,什么都没留下…
展开
-
获取对象的属性名、属性值、属性特性,协议列表
unsigned int count; objc_property_t *properties = class_copyPropertyList([self class], &count); for (int i =0; i < count; i ++) { const char *propertyName =property_getName(propertie原创 2016-02-17 11:37:46 · 667 阅读 · 0 评论 -
runtime 增加实例变量
能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?不能向编译后得到的类中增加实例变量;能向运行时创建的类中添加实例变量;解释下:因为编译后的类已经注册在 runtime 中,类结构体中的 objc_ivar_list 实例变量的链表 和 instance_size 实例变量的内存大小已经确定,同时runtime 会调用 class_setIvarL原创 2016-02-24 16:43:29 · 1232 阅读 · 0 评论 -
动态运行方法
//((void(*)(id, SEL,NSString *))objc_msgSend)([self.navigationController.viewControllers firstObject],@selector(beginRefreshing),@"参数");原创 2016-04-06 15:36:49 · 257 阅读 · 0 评论 -
动态添加方法,添加协议
void sayHello(id self,SEL _cmd,NSString *str){ NSLog(@"%@",str);} /** cls:被添加方法的类 name:可以理解为方法名,貌似随便起名,比如我们这里叫newMethod2222 imp:实现这个方法的函数 type: 具体还太熟悉,type应该是被削弱了,返回值不准也可以正常原创 2016-04-05 15:45:33 · 1254 阅读 · 0 评论 -
关于rangeOfString:和containsString:
containsString:是iOS8之后的API,所以类别自定义:- (BOOL)lee_containsString:(NSString *)str { if (str && [self rangeOfString:str].location != NSNotFound) return YES; else return NO;}这里注意当string为nil的时候,返回的是{原创 2016-05-26 16:24:58 · 955 阅读 · 0 评论