iOS知识整理(一)

最近的iOS的一些知识进行复习,基本都是一些 blog

iOS的各种锁

深入理解 iOS 开发中的锁

Objc_msgSend

Block

block的小测试

GCD

GCD容易让人迷惑的几个小问题
-Parse的底层多线程处理思路:GCD高级用法 --好好看下

  • 往主队列提交Block,无论是sync,还是async,都是在主线程中执行。

  • 往非主队列中提交,如果是sync,会在当前提交Block的线程中执行。如果是async,则会在分线程中执行。

  • dispatch_barrier_sync这个方法和dispatch_barrier_async作用几乎一样,都可以在并行queue中当做栅栏。唯一的区别就是:dispatch_barrier_sync有GCD的sync共有特性,会阻塞提交Block的当前线程,而dispatch_barrier_async是异步提交,不会阻塞。

  • dispatch_sync,我们来讲讲它和dispatch_barrier_sync的区别。二者因为是sync提交,所以都是阻塞当前提交Block线程。而它俩唯一的区别是:dispatch_sync并不能阻塞并行队列

AutoreleasePool

iOS 中的 Autorelease Pool

编译器

Mach-O 可执行文件
iOS 程序 main 函数之前发生了什么
Objective-C Runtime : From Build To Did Launch
你真的了解 load 方法么?
编译器的工作过程
clang编译器
理解编译过程

Operation Queues

iOS 并发编程之 Operation Queues
Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全

runtime

isa 和 meta-class
objectC 的isa 详解
Runtime 10种用法
OC最实用的runtime总结,面试、工作你看我就足够了
Runtime-动态创建类添加属性和方法

runloop

iOS多线程编程指南(三)Run Loop
iOS多线程编程指南(一)关于多线程编程

基于runloop的线程保活、销毁与通信

  1. 深入理解RunLoop
  2. 解密-神秘的 RunLoop
  3. iOS RunLoop进阶
  4. 关于NSRunLoop和NSTimer的深入理解

探究KVO&kvc

探究KVO的底层实现原理
iOS 万能跳转界面方法 (runtime实用篇一)
[深入浅出Cocoa]详解键值观察(KVO)及其实现机理
ObjC中国 KVC 和 KVO
手动设定实例变量的KVO实现监听

copy和 mutable copy

谈谈iOS中可变对象与不可变对象那些事儿

NSNotificationCenter

http://www.2cto.com/kf/201312/265185.html
NSNotificationCenter:管理单一进程内的通知。

当这个事件确实发生了,通知中心发出通知,立刻广播通知到所有注册的对象。或者,通知被放到通知队列中,这个通知延迟指定的通知并且根据指定的标准聚合类似的通知,然后会发布通知到通知中心。

通知中心同步地传递通知给观察者。换句话说,当发布一个通知时,直到所有的观察者都收到以及处理通知后,发布者才能重新控制发布。要异步地发送通知,要使用通知队列。请参考通知队列。

Categories

追本溯源-category如何加载
categories的作用?继承和categories在实现中有何区别?
我们知道,在类和category中都可以有+load方法,那么有两个问题:
1)、在类的+load方法调用的时候,我们可以调用category中声明的方法么?
2)、这么些个+load方法,调用顺序是咋样的呢?

所以,对于上面两个问题,答案是很明显的:
1)、可以调用,因为附加category到类的工作会先于+load方法的执行
2)、+load的执行顺序是先类,后category,而category的+load执行顺序是根据编译顺序决定的。
目前的编译顺序是这样的:

load

关于 +load 方法的几个 QA

Q: 重载自己 Class 的 +load 方法时需不需要调父类?
A: runtime 负责按继承顺序递归调用,所以我们不能调 super

Q: 在自己 Class 的 +load 方法时能不能替换系统 framework(比如 UIKit)中的某个类的方法实现
A: 可以,因为动态链接过程中,所有依赖库的类是先于自己的类加载的

Q: 重载 +load 时需要手动添加 @autoreleasepool 么?
A: 不需要,在 runtime 调用 +load 方法前后是加了 objc_autoreleasePoolPush() 和 objc_autoreleasePoolPop() 的。

Q: 想让一个类的 +load 方法被调用是否需要在某个地方 import 这个文件
A: 不需要,只要这个类的符号被编译到最后的可执行文件中,+load 方法就会被调用(Reveal SDK 就是利用这一点,只要引入到工程中就能工作)

业务

Swift
Swift之?和!

ReactiveCocoa
冷热信号
热信号是主动的,即使你没有订阅事件,它仍然会时刻推送。如第二个例子,信号在50秒被创建,51秒的时候1这个值就推送出来了,但是当时还没有订阅者。而冷信号是被动的,只有当你订阅的时候,它才会发送消息。如第一个例子。

热信号可以有多个订阅者,是一对多,信号可以与订阅者共享信息。如第二个例子,订阅者1和订阅者2是共享的,他们都能在同一时间接收到3这个值。而冷信号只能一对一,当有不同的订阅者,消息会从新完整发送。如第一个例子,我们可以观察到两个订阅者没有联系,都是基于各自的订阅时间开始接收消息的。

是不是可以发现,subject类似“直播”,错过了就不再处理。而signal类似“点播”,每次订阅都会从头开始。所以我们有理由认定subject天然就是热信号。
看到这里,我们终于揭开了热信号的面纱,结论就是:
RACSubject及其子类是热信号。
RACSignal排除RACSubject类以外的是冷信号

总结

kvo 手动触发和自动触发
category 的 load 和 class 的 load 顺序
继承 NSOperation 实现哪些方法
copy 和 mutablecopy, nsstring 和 mutablestring copy
CGRecct 怎么 copy 到堆上。
从一个点到另一个点,怎么实现移动和旋转。
runtime 的结构,实例方法和类方法 isa
weak对象什么时候释放?__weak如何实现目标值自己主动设置nil的?
__weak如何实现目标值自己主动设置nil的

将CGPoint、CGSize、CGRect等放进数组的方法?

runtime的内存结构和有哪些结构,怎么追溯实例方法和类方法。

三方库源码学习

AFnetwork
FNetworking2.0的源码解析
AFNetworking到底做了什么?
AFNetWorking的理解 --写的不错

NSUrlConnection的底层过程分析

https://developer.apple.com/reference/foundation/nsurlsession/1411597-sessionwithconfiguration

NSUrlSession

从 NSURLConnection 到 NSURLSession

YYCache
YYCache 设计思路
源码解析--YYCache
YYCache源码分析(一)
YYCache源码分析(三)

JavaScriptCore
关于iOS7里的JavaScriptCore framework

使用JavaScriptCore现在JS和OC间通信

Weex
Weex学习与实践(一):Weex,你需要知道的事
深度揭秘阿里移动端高性能动态化方案Weex

React Native通信机制详解
React Native 从入门到原理

JSPatch
所以 JSPatch 的原理就是:JS传递字符串给OC,OC通过 Runtime 接口调用和替换OC方法。这是
JSPatch实现原理详解

**iOS关于HTTPS支持并防止中间人攻击 **
iOS关于HTTPS支持并防止中间人攻击
打造安全的App!iOS安全系列之 HTTPS

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容