OC
Mae_2015
....
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KVO原理解析和自定义KVO
(1)KVO是基于runtime机制实现的, (2)类A监听类B的一个属性的变化,当B被观察时,系统会在运行期动态创建一个B的子类NSKVONotifying_B, (3)每个类都有一个isa指针指向当前类,B的isa指针会指向派生类NSKVONotifying_B,然后重写被观察的属性的setter方法, (4)键值观察依赖于NSobject的两个方法willChangeValueFo...原创 2018-05-15 15:55:16 · 636 阅读 · 0 评论 -
面试基础问题
(1)如何令自己所写的对象具备拷贝功能实现NSCopying,NSMtableCopying协议并结合runtime的方法实现赋值- (instance)copyWithZone:(NSZone *)zone{ id model =[[ [self class] allocWithZone:zone]init]; unsigned int count = 0;...原创 2018-12-15 17:16:54 · 269 阅读 · 0 评论 -
runtime(四)----API
类成员变量原创 2018-12-08 19:40:27 · 222 阅读 · 0 评论 -
isa指针详解
在arm64之前,isa是一个普通的指针,存储着class和meta-class的内存地址从arm64之后,isa指针变成了一个共用体,还使用位域来存储更多的信息原创 2018-11-28 19:42:08 · 1492 阅读 · 0 评论 -
runtime(二)(消息发送,动态解析,消息转发)
所有的方法调用都转化为objc_msgSend(id object,SEL selector,…);消息机制:给方法调用者发送消息objc_msgSend(消息接收者,消息名称);objc_msgSend的执行流程可分为三个阶段:消息发送,动态方法解析,消息转发。消息发送阶段:动态解析阶段...原创 2018-11-30 20:35:24 · 425 阅读 · 0 评论 -
runtime(一)------类结构,方法结构,方法缓存等
编写代码--------编译连接---------运行(1)OC的动态性都是靠runtime的API支撑的。(2)isa指针实例对象的isa指针指向类对象,类对象的isa指针指向元类对象,元类对象的isa指针指向根类元类(如何指向请查看)如图我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全...原创 2018-11-29 19:55:26 · 376 阅读 · 0 评论 -
CALayer 和 UIView
(1)UIView可以响应点击事件,CALayer不可以响应时间,UIView继承与UIResponder;CALayer继承于NSObject (2)UIView的frame,bounds等都是直接取的layer的, 重写view的layerClass(+号方法),inti,frame,bounds,center方法,重写layer的init,frame,bounds,position,an...原创 2018-06-28 11:56:25 · 233 阅读 · 0 评论 -
load 和 initialize 方法的区别;
相同点:都是可以自动被调用的,无需手动调用;并且它们的方法实现内部都是有锁的,是线程安全的不同点: (1)子类不实现load方法,父类的load方法就不会被调用,子类不实现init方法,父类也会调用init方法; (2)load在main函数之前被调用,不是懒加载实现的;init是懒加载,只被执行一次 (3)load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类...原创 2018-06-26 20:12:26 · 797 阅读 · 0 评论 -
[UIImage imageNamed:@""];[UIImage imageWithContentsOfFile:@""];的区别
[UIImage imageNamed:@”“];有缓存, [UIImage imageWithContentsOfFile:@”“];没有缓存原创 2018-06-25 19:38:35 · 316 阅读 · 0 评论 -
atomic和nonatomic的关系;@synthesize和@dynamic的关系
atomic,默认是atomic, 两者的区别是:修饰的属性的setter方法和getter方法不同, atomic修饰的属性的setter和getter方法,stomic在setter方法和getter方法设置和取值的时候有一个安全锁保障,比如线程A正在取currentImage的值,线程B和C同时改动currentImage的值,这时BC线程需等A完成后才能操作但是atomic所说的线...原创 2018-05-16 16:34:11 · 366 阅读 · 0 评论 -
Block底层原理(一)
(一)block的本质,是一个结构体(二)捕获变量第一种:没有参数,在block中打印,无需捕获 void (^block)(void) = ^{ NSLog(@"Hello, World!"); };编译成c++代码后(xcrun -sdk phones clang -arch arm64 -rewrite-objc 要编译的文...原创 2018-12-15 22:17:24 · 806 阅读 · 0 评论
分享