ChenYilong

Results 168 comments of ChenYilong

关于 `observeValueForKeyPath:ofObject:change:context:` ,和 `didChangeValueForKey:` 到底谁先调用的问题: 如果单单从下面这个例子的打印上,可能更像是你的说法正确: (下面的代码,我放在仓库的Demo里了,有兴趣,可以跑下试试:) ![enter image description here](http://i66.tinypic.com/ncm7th.jpg) 但是,如果 `observeValueForKeyPath:ofObject:change:context:` 是在 `didChangeValueForKey:` 内部触发的操作呢? 不信你把 `didChangeValueForKey:` 注视掉,看下 `observeValueForKeyPath:ofObject:change:context:` 会不会执行。 了解到这一点很重要,正如 [46. 如何手动触发一个value的KVO](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#46-如何手动触发一个value的kvo) 所说的: “手动触发”的使用场景是什么?一般我们只在希望能控制“回调的调用时机”时才会这么做。 而“回调的调用时机”就是在你调用 `didChangeValueForKey:` 方法时。

UDID 一直是可以用的,跟keychain没有关联

//TODO: 测试原生NSURLSession请求,与 NSURLProtocol 拦截NSURLSession请求,两种方式之间的性能对比,可以直接基于NSURLSession的回调,回调前与回调后之差进行统计。相比于 WebView 更佳统计,WebView 用 NSURLProtocol 拦截后是黑盒,而NSURLSession能看到回调。基于测试,是制作成图。并对比body大小不同的性能差距。 对于拦截网络请求带来的编解码问题,需要手动编解码,比如 gzip 编码,需要在接收到response 后进行 gzip 解码,再传回。

上面使用 `+[NSURLProtocol canonicalRequestForRequest:]` 并处理 `request` 对象的效果等同于在`-[NSURLProtocol startLoading]`中处理 `request` 对象。 ```Objective-C /** * 开始加载,在该方法中,加载一个请求 */ - (void)startLoading { NSMutableURLRequest *request = [self.request mutableCopy]; [request cyl_handlePostRequestBody]; // 表示该请求已经被处理,防止无限循环 [NSURLProtocol setProperty:@(YES) forKey:CYL_NSURLPROTOCOL_REQUESTED_FLAG_KEY inRequest:request];...

下面测试下添加 SNI 策略后,与原生网络请求相比,对性能的影响。 测试数据如下: 正常wifi网络环境下,iPhone 6s plus - iOS9.3 系统: SNI 场景: IP 直连: ```Objective-C IP 直连: 0.161788+0.156012+0.220671+0.149536+0.160505+0.158274+0.200679+0.164229+0.173180+0.171909+0.177469+0.195068+0.166481+0.165608+0.183510+0.183593+0.171261+0.176552+0.194354+0.172321+0.179747+0.166126+0.213673+0.173284+0.183772+0.154173+0.156247+0.159818+0.186316+0.203103=5.279259/30=.1759753 详细数据: 2017-08-25 14:53:30.155 executionTime(执行时间) = 0.161788 2017-08-25 14:53:31.800 executionTime(执行时间) = 0.156012 2017-08-25...

## 基于 CFNetWork 有性能瓶颈 方案: 1. 调研性能瓶颈的原因 2. 换用其他提供了SNI字段配置接口的更底层网络库。 ### 调研性能瓶颈的原因 在使用 CFNetWork 实现了基本的 SNI 解决方案后,虽然问题解决了,但是遇到了性能瓶颈,对比 `NSURLConnection/NSURLSession` ,打开流到结束流时间明显更长。介绍下对比性能时的调研方法: /*one more thing*/ #### 调研性能瓶颈的方法 可以使用下面的方法,做一个简单的打点,将流开始和流结束记录下。 记录的数据如下: key | from | to...

@lwk123qq 加油

[第四个问题](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#4-这个写法会出什么问题-property-copy-nsmutablearray-array) 已经给出了解释,希望能解决你的疑问。