iOSBlog
iOSBlog copied to clipboard
微博@iOS程序犭袁 的blog
Hi, ChenYilong! 在标题包含的文中我读到“使用 NSURLProtocol 拦截 NSURLSession 请求丢失 body”,但我实践中使用NSURLConnection 通过post请求 NSURLProtocol 也会拦截,所以这段话是不是有歧义,或者劳烦解释下。
### 1. IP 测速排序方案的目的 无论是从 Local DNS 解析域名,获取到 IP 列表,还是从第三方的 DNS 解析服务中,获取到域名对应的 IP 列表。我们获得多个 IP 后,总是想选取一个最优的 IP 使用,本文主要探讨如何在客户端探测 IP 的连接性以及连接速度,保证返回可用性最好的IP,以达到“IP优选”的目的。 ### 2. 新浪开源的 httpdns 的 sdk 里的测速逻辑 新浪开源一个 HTTPDNSLib ,里面包含了测速逻辑,GitHub地址如下:...
# 有一种 Block 叫 Callback,有一种 Callback 叫 CompletionHandler 【引言】iOS10推送部分的API,大量使用了 `CompletionHandler` 这种命名方式,那么本文我们将对比下这种 Block 的特殊性,以便更好的理解和在自己的项目中实践 `CompletionHandler` 样式的 Blcok。 原文链接: [《有一种 Block 叫 Callback,有一种 Callback 叫 CompletionHandler》]( https://github.com/ChenYilong/iOSBlog/blob/master/Tips/基于Websocket的IM即时通讯技术/有一种%20Block%20叫%20Callback,有一种%20Callback%20做%20CompletionHandler.md ) ## 正文 我们作为开发者去集成一个 Lib...
## 前言 【前言】KVO API设计非常不合理,于是有很多的KVO三方库,比如 [KVOController](https://github.com/facebook/KVOController) 用更优的API来规避这些crash,但是侵入性比较大,必须编码规范来约束所有人都要使用该方式。有没有什么更优雅,无感知的接入方式? ## 简介 KVO crash 也是非常常见的 Crash 类型,在探讨 KVO crash 原因前,我们先来看一下传统的KVO写发: ```Objective-C #warning move this to top of .m file //#define MyKVOContext(A) static void *...
# iOS 防 DNS 污染方案调研(一)--- HTTPS(非SNI) 业务场景 ## 1. 背景说明 本文主要介绍 HTTPS(含SNI) 业务场景下在 iOS 端实现 “IP直连” 的通用解决方案。 ### 1.1 HTTPS 发送 HTTPS 请求首先要进行 SSL/TLS 握手,握手过程大致如下: 1. 客户端发起握手请求,携带随机数、支持算法列表等参数。 2. 服务端收到请求,选择合适的算法,下发公钥证书和随机数。 3....
我创建了一个Lib,同时支持手动集成和CocoaPods,但是集成者发现手动集成可以,但是 CocoaPods 不行。最后找到了原因。 对比 | 旧 | 新 -------------|-------------|------------- 目录结构 | |  spec写法 | 将 bundle 文件写在了 s.vendored_frameworks | 将 bundle 文件写在 s.resources...
#HTTP状态码汇总 编号 | 名称 | 解释 -------------|-------------|------------- 1️⃣❌❌| 🔴🔴🔴| 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。 100 | Continue | 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 | Switching Protocols | 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upgrade消息头中定义的那些协议。: 只有在切换新的协议更有好处的时候才应该采取类似措施。例如,切换到新的HTTP版本比旧版本更有优势,或者切换到一个实时且同步的协议以传送利用此类特性的资源。 102 | Processing | 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。...
#技术实现细节 ## IM系列文章 IM系列文章分为下面这几篇: - [《IM 即时通讯技术在多应用场景下的技术实现,以及性能调优(iOS视角)》](https://github.com/ChenYilong/iOSBlog/blob/master/Tips/基于Websocket的IM即时通讯技术/IM%20即时通讯技术在多应用场景下的技术实现,以及性能调优(iOS视角).md) - [《技术实现细节》]( https://github.com/ChenYilong/iOSBlog/blob/master/Tips/基于Websocket的IM即时通讯技术/技术实现细节.md ) (本文) - [《有一种 Block 叫 Callback,有一种 Callback 做 CompletionHandler》]( https://github.com/ChenYilong/iOSBlog/blob/master/Tips/基于Websocket的IM即时通讯技术/有一种%20Block%20叫%20Callback,有一种%20Callback%20做%20CompletionHandler.md ) - [《防 DNS 污染方案》]( https://github.com/ChenYilong/iOSBlog/blob/master/Tips/基于Websocket的IM即时通讯技术/防%20DNS%20污染方案.md ) 本文是第二篇。 本文将以开源项目...