当我们有方法名和参数列表,想要动态地给对象发送消息,可用通过反射函数机制来实现,有两种常用的做法: 一.performSelector - (id)performSelector:(SEL)aSelector; - (id)performSelector:(SEL)aSelector withObject:(id)object; - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;…
////  RootViewController.h//  DSCategories////  Created by dasheng on 15/12/17.//  Copyright © 2015年 dasheng. All rights reserved.//#import <UIKit/UIKit.h>@interface RootViewController : UITableViewController@end ////  RootViewController.m//  DSCate…
iOS 基础函数解析 - Foundation Functions Reference 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Foundation Functions Referenc…
iOS  反射 学习 和 运用 反射:  通过 类名来获得生成的相应的类的实例 的这种机制  叫 反射 常用的反射方式 把 NSDictionary  转成 自定义 model 自定义 model 转成  NSDictionary (1)第一种 其实很好实现的 ,你可以自己写映射关系 对应 ,也可以使用一些优秀的第三方,比如 MJExtension 等  特别方便 (2)MJExtension 有一个方法  valueKey,  这个 是可以转字典 但是这种方法是有局限的  当这个 比较适合 单…
http://www.cr173.com/html/18677_1.html 1.反射获取类属性名和属性类型 unsigned ; objc_property_t *properties = class_copyPropertyList([MyEntity class], &propertyCount); ; i < propertyCount; ++i) { objc_property_t property = properties[i]; const char * name = prop…
iOS中timer相关的延时调用,常见的有NSObject中的performSelector:withObject:afterDelay:这个方法在调用的时候会设置当前runloop中timer,还有一种延时,直接使用NSTimer来配置任务. 这两种方式都一个共同的前提,就是当前线程里面需要有一个运行的runloop并且这个runloop里面有一个timer. 我们知道:只有主线程会在创建的时候默认自动运行一个runloop,并且有timer,普通的子线程是没有这些的.这样就带来一个问题了,有…
大家好,这篇我开始学习函数了.先学 C 函数,然后再 OC 的吧.OC 应该复杂点的吧. 然后看看汇编情况哦! 学习函数呢,肯定要弄清楚几个事情. 1.跳转地址. 2.返回地址 3.参数 4.函数获取参数 5.返回值和如何返回 6.扫尾 我们开始了哦!1个个的突破!唉,这个学习笔记是一边学一边写,不知道到底能不能边写边突破呢.小马过河,试试吧.呵呵. 1.跳转地址.因为xcode默认反汇编的时候,并没有显示出机器码,所以这里,我们要用一个命令去显示:disassemble -fmb 我们发现这样…
iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值.(注意:对象的类,如果是派生类,就得靠其他方式来实现了,因为得到不该基类的属性.) 本人常用的反射方式,有如下两种: 从一个自定义实体类->自定义实体类从一个NSDictionary->自定义实体类(此方式最最常用,如网络Json数据会组成NSDictionary.sqlite查询数据,可以用第三方组件组成NSDictionary)直接上码,(这里码在NSObject类别中)获取对象所有属性:- (N…
下面两段代码都在主线程中运行,我们在看别人代码时会发现有时会直接调用,有时会利用performSelector调用,今天看到有人在问这个问题,我便做一下总结, [delegate imageDownloader:self didFinishWithImage:image]; [delegate performSelector:@selector(imageDownloader:didFinishWithImage:)withObject:self withObject:image]; 1.per…
U3D文档中说明了,反射在IOS是支持的,除了system.reflection.emit空间内的,其它都支持.JIT是不支持的. 本质上来说即是:只要不在运行时动态生成代码的行为都支持,reflection.emit下的功能可以动态的生成代码(生成程序集,生成类,生成函数,生成类型等,是真正的生成代码),JIT也能动态的生成代码(如C#生成的IL在各平台上运行时可以由JIT编译成汇编语言). 其它的并不会生成代码的反射功能是可以用的,如 type.gettype, getfield, Acti…