xcodebuild 生成app以及生成ipa文件
objc_msgSend相关结构体 消息发送原理
介绍 消息发送以及相关的结构体
apple open source
objc_msgSend
给对象发送消息写法:
`id returnValue = [somneObject messageName:parameter];`
编译器会将上诉代码转换为:
id = returnValue = objc_msgSend(someObject,@selector(messageName:),parameter);
其中 someObject叫做“接受者”(receiver),messageName叫做“选择子”(selector),选择子和参数合称“消息”
objc_msgSend 的定义: 该函数有两个参数,一个 id 类型,一个 SEL 类型。
id objc_msgSend(id self, SEL op, ...);
Autorelease相关.md
Method-Swizzling使用
sqlite3-简介.md
使用
在iOS中操作SQLite数据库可以分为以下几步(注意先在项目中导入libsqlite3框架):
- 添加libsqlite3.tbd
- 打开数据库,利用sqlite3_open()打开数据库会指定一个数据库文件保存路径,如果文件存在则直接打开,否则创建并打开。打开数据库会得到一个sqlite3类型的对象,后面需要借助这个对象进行其他操作
- 执行SQL语句,执行SQL语句又包括有返回值的语句和无返回值语句。
- 对于无返回值的语句(如增加、删除、修改等)直接通过sqlite3_exec()函数执行;
- 对于有返回值的语句则首先通过sqlite3_prepare_v2()进行sql语句评估(语法检测),然后通过sqlite3_step()依次取出查询结果的每一行数据,对于每行数据都可以通过对应的sqlite3_column_类型()方法获得对应列的数据,如此反复循环直到遍历完成。当然,最后需要释放句柄。
NSRunloop简介.md
NSRunLoop是IOS消息机制的处理模式
- NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。
- NSRunLoop 就是一直在循环检测,从线程start到线程end,检测inputsource(如点击,双击等操作)同步事件,检测timesource同步事件,检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来做处理。
SDWebImage375源码-SDWebImageDecoder
由于UIImage的imageWithData函数是每次画图的时候才将Data解压成ARGB的图像,
所以在每次画图的时候,会有一个解压操作,这样效率很低,但是只有瞬时的内存需求。
为了提高效率通过SDWebImageDecoder将包装在Data下的资源解压,然后画在另外一张图片上,这样这张新图片就不再需要重复解压了。
这种做法是典型的空间换时间的做法。
首先NSURLCache是缓存原始数据(raw data)到磁盘或内存,因此每次使用的时候需要将原始数据转换成具体的对象,如UIImage等,这会导致额外的数据解析以及内存占用等,而SDWebImage则是缓存UIImage对象在内存,缓存在NSCache中,同时直接保存压缩过的图片到磁盘中;还有一个问题是当你第一次在UIImageView中使用image对象的时候,图片的解码是在主线程中运行的!而SDWebImage会强制将解码操作放到子线程中。
以上记录下来备忘 还不是很理解怎么回事