![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS底层知识
feifeiwuxian
这个作者很懒,什么都没留下…
展开
-
block的变量捕获
为了保证block内部能够正常访问外部的变量,block有个变量捕获机制block的类型block有3种类型,可以通过调用class方法或者isa指针查看具体类型,最终都是继承自NSBlock类型在ARC环境下,编译器会根据情况自动将栈上的block复制到堆上,比如以下情况 block作为函数返回值时将block赋值给__strong指针时block作为Cocoa ...原创 2019-12-19 17:22:21 · 346 阅读 · 0 评论 -
iOS内存管理一些要点
1.CADisplayLink、NSTimer注意事项会对target产生强引用,如果target又对它们产生强引用,那么就会引发循环引用- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.timer = [NSTime...原创 2019-12-19 16:35:38 · 143 阅读 · 0 评论 -
ios多线程注意事项
容易混淆的术语有4个术语比较容易混淆:同步、异步、并发、串行同步和异步主要影响:能不能开启新的线程同步:在当前线程中执行任务,不具备开启新线程的能力异步:在新的线程中执行任务,具备开启新线程的能力 (例如丢在主线程中并不会开启新的线程) dispatch_queue_t queue = dispatch_get_main_queue(); dispatch_...原创 2019-12-17 10:18:01 · 244 阅读 · 0 评论 -
ios底层(一)Category的本质,load,initialize方法的调用顺序
1.Category底层结构,如下2.使用指令从编译后的c++代码,也可以看出是把在分类中写的方法都赋值给了结构体将Objective-C代码转换为C\C++代码xcrun-sdkiphoneosclang-archarm64-rewrite-objcOC源文件-o输出的CPP文件如果需要链接其他框架,使用-framework参数。比如-framew...原创 2019-09-19 11:38:34 · 801 阅读 · 0 评论