0%

简介

仓库是 Git 中的一个概念,实际上就是一个被 Git 标记的本地文件目录,目录中文件的增、删、改都能被 Git 捕捉到。

Git 创建新仓库有两种方式,一种是本地初始化一个新仓库,另外一种是从服务器上 clone 一个仓库到本地。

阅读全文 »

安装

  1. 直接官网下载安装包安装(传送门),一路点下一步就行。
  2. 喜欢图形化界面的朋友,可以下载安装 SourceTree(传送门),同时也会安装好 Git,一路点下一步即可。
阅读全文 »

简介

Git 作为分布式版本管理系统的鼻祖,是目前主流的版本管理方案。

什么是版本管理?

类似于毕业论文,为了避免删除的部分后面还会再用到,每次修改前,都会先另存为一份论文,再进行修改。经过 n 次修改后,就会变成下面这样。

阅读全文 »

atomic

默认属性,系统在生成 get / set 方法时通过自旋锁保证 get / set 操作的完整性,当多个线程同时访问属性时,能够保证操作按顺序执行。

如果重写了 get / set 方法,那 atomic、nonatomic、copy 等修饰符都将毫无卵用。

锁会产生额外开销,所以使用 atomic 修饰的变量读写速度不快。

atomic 只能保证多线程下的读写安全,当其它线程释放了这个对象时,就可能会造成 crash,所以 atomic 并不是线程安全的。

阅读全文 »

iOS 基础知识整理

1. Tagged Pointer

概括:将本来用于存储对象指针的空间存储数据,以节省空间、提高效率。

在 32 位设备中,NSNumber、NSDate 这类对象占用的空间是 8 字节(对象指针 4 字节 + 对象值 4 字节),而到 64 位设备中,占用的空间则是 16 字节(对象指针 8 字节 + 对象值 8 字节),空间上翻了一倍。效率上,NSNumber、NSDate 会在堆上分配空间存储对象的值,同时还要维护对象的引用计数进行销毁释放,效率不高。

阅读全文 »

Crash 相关

  1. 针对 iOS 8.4 及以下系统,在 layoutSubViews 方法中,不要删除一个 View(view = nil)。

Travis-CI简介

Travis CI是一个托管的,分布式的持续集成服务,用于构建和测试在GitHub上托管的软件项目。

利用 Travis CI ,可以实现每次 push 新文章到 git 后,Travis CI 会自动检测到提交,然后根据配置文件 “.travis.yml”,按照设定好的步骤帮我们自动部署网页。

阅读全文 »

1. unacceptable content-type 错误

这个错误表示回包类型无法解析,一般这种情况请求回包的状态码是:200,表示错误并不在后台。详细错误描述为:

Request failed: unacceptable content-type: text/plain(或者 text/html)

可以看出错误的原因是 AFNetworking 框架并不支持解析 plainhtml 类型的数据。

解决办法:AFURLResponseSerialization.h 类里面找到 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
然后在后面追加 @"text/html", @"text/plain"两个参数即可。
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain", nil];

NSCache 是什么

简单的理解,NSCache 就是一个可变的键值对集合,类似于 NSMutableDictionary,用于存储一些临时数据。在内存吃紧时 NSCache 会自动释放存储的临时数据。

阅读全文 »

随着 APP 版本的迭代,安装包无法避免的会变的越来越大。分析安装包的构成可以发现,安装包主要是由资源文件和代码构成的,所以从这两个点出手优化可以达到一个很明显的效果。同时编译选项的配置也会对安装包的大小有一定影响。

阅读全文 »