- 博客(7)
- 收藏
- 关注
原创 objc_class 简介
首先先来看一下OC中 Class 具体的结构:typedef struct objc_class *Class;struct objc_class { Class isa; #if !__OBJC2__ Class super_class OBJC2_UNAVAILABLE;
2017-07-10 16:34:34 622
原创 用GCD实现同步锁
如果多个线程同时执行同一份代码时很容易出问题,所以通常情况下,我们会用加锁的办法实现同步机制。1.@synchronized(){} 系统自动创建一个锁,等到其中代码执行完之后,锁就会被释放。 2.手动加锁,NSLock 等,在执行代码前后分别调用lock 和 unlock 方法进行加锁和释放。以上两种方法,都可以保证能同步运行所要执行的方法,但是如果频繁使用会降低代码效率。现在可以用GCD来实现
2017-04-26 16:11:10 589
原创 OC消息转发机制
OC方法调用发送消息,如果找不到对应名称的方法时,在发生Crash之前有三次机会进行补救。动态方法解析备用接受者消息转发动态方法解析对象在接收到未知的消息时,首先会调用所属类的类方法 +resolveInstanceMethod:(实例方法)或 者+resolveClassMethod:(类方法)。 这个方法返回值Bool类型,表示这个类能否新增一个方法处理这种情况。使用这种办法,需要实
2017-04-19 20:37:09 432
原创 Objc_msgSend 方法
OC中方法调用用OC的术语来说叫做“消息传递”,是在运行时的时候动态绑定方法,调用Objc_msgSend方法执行。区别于C语音中的函数调用方式,C语言是使用静态绑定的,在编译阶段就会将函数调用指令直接生成,运行时的时候直接调用。正是因为这样不同的机制,OC才会成为一门动态语言。在实际开发过程中,我们调用方法 e.g. [objc functionName:param]; 编译器会将其转化为C函数O
2017-04-19 10:46:33 714
原创 Block 回顾总结
Block 回顾总结1.如果用Copy 或者 Strong 来修饰Block ,block 存在于堆空间,容易造成循环引用,用__weak来修饰来解决循环引用问题如果用weak来修改Block block存在于栈区 不会出现循环引用2.block不能对引用的变量进行修改,如果要修改 需要用__block来修饰要修改的变量__block int value = 3;void(^ myBlock)(i
2017-04-17 15:38:02 179
原创 Sublime-text3 配置markdown编辑器 支持Evernote 保存以及实时预览
Sublime-text3 配置markdown编辑器 支持Evernote 保存以及实时预览1.首先先下载sublime text3注册码:—– BEGIN LICENSE —– Michael Barnes Single User License EA7E-821385 8A353C41 872A0D5C DF9B2950 AFF6
2017-04-01 18:34:04 3958 1
原创 高度自适应循环缩放滚动view实现
高度自适应循环缩放滚动view实现项目中需要封装一个能够高度自适应的循环缩放的滚动视图,在此做下整理。 首先想到用UICollectionView实现, 继承自UICollectionViewFlowLayout 重写其中的几个方法 :- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRec
2017-03-20 15:48:41 800 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人