------------绑定频道源码----------------------
.版本 2
.支持库 eAPI
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
时钟1.时钟周期 = 500
.子程序 _时钟1_周期事件
.局部变量 系统进程列表, 进程信息, , "0"
.局部变量 所有窗口标题, 文本型, , "0"
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 YY进程, 文本型
.局部变量 频道ID, 文本型
.局部变量 频道名称, 文本型
.局部变量 打开频道, 逻辑型
时钟1.时钟周期 = 0
打开频道 = 假
YY进程 = “duospeak.exe”
频道ID = “189689” ' 根据自己的频道修改
频道名称 = 【鬼火涅磐】<h1>涅磐重生!”
系统进程列表 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (系统进程列表), x)
.如果真 (到大写 (YY进程) = 到大写 (系统进程列表 [x].进程名称))
所有窗口标题 = 取所有窗口列表 ()
.计次循环首 (取数组成员数 (所有窗口标题), y)
.如果真 (寻找文本 (取窗口标题 (到数值 (所有窗口标题 [y])), 频道ID, 0, 假) > 0)
.如果真 (寻找文本 (取窗口标题 (到数值 (所有窗口标题 [y])), 频道名称, 0, 假) > 0)
打开频道 = 真
跳出循环 ()
.如果真结束
.如果真结束
.计次循环尾 ()
.如果真结束
.计次循环尾 ()
.如果真 (打开频道 = 假)
信息框 (“请打开YY并进入频道:” + 频道ID + “,再打开软件!”, 0, “错误提示”)
销毁 ()
.如果真结束
时钟1.时钟周期 = 500
------------------------------------------------------
删除绑定的话 在源码里把这段删除就OK了
iOS源码解析—YYModel(YYClassInfo) 分析了如何根据OC的Class对象构建YYClassInfo对象,为接下来的JSON数据和Model转换作准备,这篇文章开始讲解NSObject+YYModel。
分析NSObject+YYModel.h文件,包括3个Category和一个protocol,分别是:
字典studentDic中的key对应原字典playerDic中的key,studentDic中的Model由playerDic中的value转化得到。
首先定义了两个类,_YYModelMeta和_YYModelPropertyMeta,分别封装了Model的信息和Model中各属性的信息。
_YYModelMeta维护了Class的相关信息,下面是注释:
_YYModelMeta是通过YYClassInfo对象的信息构建得到的。首先调用metaWithClass:cls方法,该方法如下:
维护了一个键值对cache作为缓存,用cls作为key,调用CFDictionaryGetValue方法去缓存中查找,如果有,直接返回构建好的_____YYModelMeta对象,如果没有找到或者needUpdate属性标记为true,则根据cls创建一个新的_YYModelMeta对象,并且存入缓存。这样不需要每次都创建,提高了性能。
接下来看一下initWithClass:方法,
下面分析几个重要的方法:
YYModel的总体思想是以Model属性的类型为准,如果JSON中对应名称的value的类型和Model属性类型不一致,会对value的类型进行转化,保证和Model属性的类型一致。如果兼容不了,不进行属性赋值。下面分析一下ModelSetValueForProperty方法:
该方法上文中提到该方法是用来JSON转成Model的过程中对Model中的属性进行赋值的方法,该方法做了部分基本类型的兼容:
YYModel还提供了一些工具方法,下面简单分析一下:
YYModel作为一个负责JSON数据和Model转化的库,十分易用和高效,特别是做了一些类型的兼容和转化,避免了服务端接口数据类型和客户端Model对象类型不兼容导致的问题,例如执行了不存在的方法而导致崩溃。另一方面,对YYModel的学习在一定程度也促进了对runtime机制的学习和了解。
关于YYModel的分析到这儿先告一段落,由于本人的iOS基础有待提升,再加上表达能力有限,文中许多地方的分析和思路,表达的不是很准确和清楚,希望通过今后的学习和练习,提升自己的水平。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)