纯css多级下拉菜单 可以遮住表单 支持IE6
外国人写的纯css多级下拉菜单,可以遮住表单,支持IE5.5, IE6, IE7, IE8, Firefox, Safari(PC), Opera and Google Chrome ...二叉树知识点速记
2019-4-12 liuyingcong 其它
mysql优化篇
mysql优化篇phpstorm常用快捷键
2019-4-12 dingshangchao
常用的phpstorm快捷键汇总runtime的一些其他常见用法
上篇我们利用runtime来实现了按键点击范围的扩大,其实runtime还有许多常见用法,比如:动态获取类名,动态获取类的成员变量,动态获取类的属性列表,动态获取类的方法列表,动态获取类所遵循的协议列表,动态添加新的方法,类的实例方法实现的交换,动态属性关联,消息发送与消息转发机制等。下面就介绍一些常见的用法
1.获取类名
动态的获取类名是比较简单的,使用class_getName(Class)就可以在运行时来获取类的名称。class_getName()函数返回的是一个char类型的指针,也就是C语言的字符串类型,所以我们要将其转换成NSString类型,然后再返回出去。下方的+fetchClassName:方法就是我们封装的获取类名的方法
2.获取成员变量
下方这个+fetchIvarList:这个方法就是我们封装的获取类的成员变量的方法。当然我们在获取成员变量时,可以用ivar_getTypeEncoding()来获取相应成员变量的类型。使用ivar_getName()来获取相应成员变量的名称。下方就是对获取成员变量的功能的封装。返回的是一个数组,数组的元素是一个字典,而字典中存储的就是相应成员变量的名称和类型。
3.获取成员属性
上面获取的是类的成员变量,那么下方这个+fetchPropertyList:获取的就是成员属性。当然此刻获取的只包括成员属性,也就是那些有setter或者getter方法的成员变量。下方主要是使用了class_copyPropertyList(Class,&count)来获取的属性列表,然后通过for循环通过property_getName()来获取每个属性的名字。当然使用property_getName()获取到的名字依然是C语言的char类型的指针,所以我们还需要将其转换成NSString类型,然后放到数组中一并返回。
4.获取类的实例方法
接下来我们就来封装一下获取类的实例方法列表的功能,下方这个+fetchMethodList:就是我们封装的获取类的实例方法列表的函数。在下方函数中,通过class_copyMethodList()方法获取类的实例方法列表,然后通过for循环使用method_getName()来获取每个方法的名称,然后将方法的名称转换成NSString类型,存储到数组中一并返回。
5.动态添加方法实现
下方就是动态的往相应类上添加方法以及实现。下方的+addMethod方法有三个参数,第一个参数是要添加方法的类,第二个参数是方法的SEL,第三个参数则是提供方法实现的SEL。稍后在消息发送和消息转发时会用到下方的方法。下方主要是使用class_getInstanceMethod()和method_getImplementation()这两个方法相结合获取相应SEL的方法实现。下方的IMP其实就是Implementation的方法缩写,获取到相应的方法实现后,然后再调用class_addMethod()方法将IMP与SEL进行绑定即可。
6.方法实现交换
下方就是讲类的两个方法的实现进行交换。如果将MethodA与MethodB的方法实现进行交换的话,调用MethodA时就会执行MethodB的内容,反之亦然。
9种常见中国传统纹样
2019-4-4 zhenggaoyun 视觉设计
9种常见中国传统纹样Java集合框架速记
2019-4-4 liuyingcong 安卓开发
从navicat中导入sql文件过大解决
2019-4-4 dingshangchao 数据库
从navicat中导入sql文件过大会报错:Got a packet bigger than 'max_allowed_packet' bytes,修改配置可以解决利用runtime实现按键点击范围放大
在编写项目的过程中我们一般都会遇到这样的情况,按键设计的比较小,用户不方便点击,造成体验很差这种状况,我们就需要在不改变按键UI的情况下实现按键点击范围放大
这时候我们就需要用的runtime机制,在程序运行和编译的时候做一个小动作,改变一下按键的点击范围
首先我们先建立一个button的分类来扩充一下按键的方法
设定一些静态的常量
static char topNameKey
static char rightNameKey
static char bottomNameKey
static char leftNameKey
然后编写扩大范围的方法
返回一个扩大的范围
改写按键点击事件,让点击范围变大