导航:首页 > 源码编译 > oc源码编译

oc源码编译

发布时间:2024-09-07 11:16:08

⑴ iOS源码解析—YYModel(NSObject+YYModel)

​ 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基础有待提升,再加上表达能力有限,文中许多地方的分析和思路,表达的不是很准确和清楚,希望通过今后的学习和练习,提升自己的水平。

⑵ 安卓平台属于动态库操作吗

属于
静态库全称静态链接库,动态库全称动态链接库,看到全称就知道什么意思了吧?也就是说在链接的时候才会用到的库,只有C/C++、OC语言才会有链接过程,java没有。

android中说到静态库和动态库,一般说的都是C/C++代码,我们知道在android中是通过jni技术访问到C代码的,我们会把C/C++打包成so文件,这个就是动态库(共享库)。如果我们想要使用的C库是.a形式的静态库时,我们要把.a包装成so库,具体网上有方法。

个人感觉在java语言中讨论静态库和动态库就是个伪概念,java是的编译结果是字节码文件,不是二进制文件,而且没有链接的过程,jvm在解释执行java代码的时候调用C++代码只能是动态的。

在C++和object C开发中,用编译链接的过程,静态库在链接过程中,会和自己写的源代码打到一块,多个程序多个静态库。动态库不会打到一块,如果有共享情况的话,系统只会加载一次。

OC的代码处理过程是很复杂的,有预处理、编译、链接过程,预处理就是处理宏什么的,编译这个过程就很复杂了,有编译前端和编译后端,编译称机器码(中间还会有汇编的过程),链接就是链接动态库或者静态库。

Android(java)代码处理过程就很简单啦,毕竟是运行在虚拟机上的。没有所谓的预处理,直接编译,这里的编译也就是把java代码转化成字节码,这个编译和OC中的编译可不是一个概念,只不过也这么叫而已。后续Aandroid还会用dex工具把.class打包成.dex,不同的VM模式(5.0以后都是ART)会对.dex进行不同的优化,具体看Android 编译到运行APK过程总结。需要提一下的是,ART采用AOT和JIT技术,在安装或者运行的时候,会把字节码转化成机器码,这个机器码也会受VM控制的,具体看Android之Dalvik 、ART

C/C++、Object C属于编译型语言,这是毋庸置疑的,因为它们都会在生成安装包之前编译成机器码。

⑶ iOS 的 framework 和 ipa 文件可以反编译出源码吗

ipa 文件其实是一个压缩包,里面包括了可执行文件,资源文件等信息。
反编译的话也可以,只是你要有足够强的功底,就可以。这个至少汇编得会吧,然后可以根据反编译出来的汇编写出原来的OC程序。现在我没有发现有什么工具可以直接反编译出ELF文件的。
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题。这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。

阅读全文

与oc源码编译相关的资料

热点内容
看电视可以用什么app 浏览:943
安卓路由表怎么看 浏览:76
10个小孩分糖果python 浏览:823
安卓app小红点怎么取消 浏览:288
马哥linux面授 浏览:770
2345程序员 浏览:372
怎么开启网速显示安卓 浏览:206
索尼950app怎么样 浏览:393
计算机毕设论文源码 浏览:148
小米手机怎么下载易媒体App 浏览:191
还原系统设计可以怎样清理文件夹 浏览:670
北京时间校准服务器云服务器 浏览:844
pythonexcel数据计算 浏览:49
内医附院党建APP怎么下载 浏览:356
荣耀v20刷加密门禁卡 浏览:329
app缓冲视频怎么保存在手机 浏览:433
广度优先算法c语言 浏览:680
提高程序员竞争力 浏览:108
nfc可以开加密门卡吗 浏览:675
如何知道网页使用的服务器是什么 浏览:224