JT Blog

Thinking will not overcome fear but action will.

IOS面试集锦

面试-看这里就足够了-直通BAT

1. 架构 1.1 架构 1.1.1 架构 2. 网络 2.1 网络 参考 2.1.1 NSURLRequest 常见的请求头设置属性: Host: 目标服务器的网络地址 Accept: 让服务端知道客户端所能接收的数据类型,如text/html Content-Type: body中的数据类型,如application/json; charset=UTF-8 Accept-...

键值观察KVO

KVO及其实现机理

前言 Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是: 一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。 在 Objective-C 中有两种使用键值观...

AFNetworking学习之路(四)

监控网络状态

AFNetworkReachabilityManager 是对 SystemConfiguration 模块的封装,苹果的文档中也有一个类似的项目 Reachability 这里对网络状态的监控跟苹果官方的实现几乎是完全相同的。 AFNetworkReachabilityManager 的使用和实现 AFNetworkReachabilityManager 的使用还是非常简单的,只需要三...

AFNetworking学习之路(五)

AFURLSessionManager

AFURLSessionManager 绝对可以称得上是 AFNetworking 的核心。 负责创建和管理 NSURLSession 管理 NSURLSessionTask 实现 NSURLSessionDelegate 等协议中的代理方法 使用 AFURLSessionManagerTaskDelegate 管理进度 使用 _AFURLSessionTaskSwi...

AFNetworking学习之路(二)

序列化请求和响应

AFNetworking对发出请求以及接收响应的过程进行序列化,这涉及到两个模块: AFURLResponseSerialization AFURLRequestSerialization 前者是处理响应的模块,将请求返回的数据解析成对应的格式。而后者的主要作用是修改请求(主要是 HTTP 请求)的头部,提供了一些语义明确的接口设置 HTTP 头部字...

AFNetworking学习之路(三)

安全策略

自 iOS9 发布之后,由于新特性 App Transport Security 的引入,在默认行为下是不能发送 HTTP 请求的。很多网站都在转用 HTTPS,而 AFNetworking 中的 AFSecurityPolicy 就是为了阻止中间人攻击,以及其它漏洞的工具。 AFSecurityPolicy 主要作用就是验证 HTTPS 请求的证书是否有效,如果 app 中有一...

AFNetworking学习之路(一)

AFNetworking与ASIHTTPRequest的区别

底层实现 1、AFN的底层实现基于OC的NSURLSession 2、ASI的底层实现基于纯C语言的CFNetwork框架 3、因为NSURLSession是在CFNetwork之上的一层封装,因此ASI的运行性能高于AFN 对服务器返回的数据处理 1、ASI没有直接提供对服务器数据处理的方式,直接返回的是NSData/NSString 2、AFN提供了...

Swift 进度条

  水波纹进度

import UIKit enum EWSWaveShapModel { case circle case rect } class EWSWaveLoadingView: UIView { var originX = 0.0 //X坐标起点, the x origin of wave var shapeModel : EWSWaveShapMo...

编写高效代码(一)

参考Effictive Objective-C 2.0 第一章节 正文 在类的头文件中尽量少引入其他头文件 减少编译时间 解决两个类互相引用的问题(可能引起编译错误) 多用字面量语法,少用与之等价的方法 使用字面量语法可以缩减源代码长度,使其更为易读,也更安全。 例:NSString *someString = @”Effective Objective-C 2...

如何在mac 终端升级ruby版本

rvm是什么?为什么要安装rvm呢,因为rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。 第一步:安装rvm $ curl -L get.rvm.io | bash -s stable $ source ~/.rvm/scripts/rvm 等待终端加载完毕,后输入: rvm -v 如果能显示版本好则安装成功了。 第二步:安装ruby 列出ruby可安装的...