风行的博客

使用 Carthage 做依赖管理

Carthage - A simple, decentralized dependency manager for Cocoa.

Carthage 会用最简单的方式来管理第三方库,它会在下载完第三方库代码后,通过 xcodebuild 将其编译成动态库,但它不会像 CocoaPods 那样去修改你的项目文件和编译设置,这些都需要你自己去完成。

使用 Xcodebuild 打包 IPA 并上传蒲公英

xcodebuild - 是苹果提供的项目自动构建工具,包含在 Command Line Tools 中,可以完成 iOS 项目的编译、打包和签名等工作。

shell script - 是一种命令语言,有点像 Windows 下的批处理,但更强大,它可以跑在 Linux/Unix 系统的 shell 程序中。

iOS 应用的组件化设计

组件化 - 简单来说就是将项目按层级、模块拆分成不同组件,实现即插即拔的效果。

随着 app 功能和体积的增长,也带来了一些问题,例如编译速度缓慢、commit 代码经常要 merge、业务代码混在一起、开发功能类似的新项目时需要从头搭建。组件化可以有效解决这些问题。

代码重构

代码重构 - 重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。

Martin Flower 在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。"

了解 Block

block - 其实就是 Objective-C 对于闭包的对象实现。

Block 是 Apple 为 C、C++ 以及 Objective-C 添加的特性,使得这些语言可以用类 lambda 表达式的语法来创建闭包。在适当的时候使用 block 替代 delegation 可以使代码看起来更紧凑,但也需要注意 block 带来的循环引用问题。

Objective-C Runtime 开发

Runtime - 使用 C 和汇编实现的运行时代码库,Objective-C 中有很多语言特性都是通过它来实现。

了解 Runtime 开发可以帮助我们更灵活的使用 Objective-C 这门语言,我们可以将程序功能推迟到运行时再去决定怎么做,还可以利用 Runtime 来解决项目开发中的一些设计和技术问题,使开发过程更加具有灵活性。

iOS 内存管理

内存管理 - 指程序在运行时申请内存,并在使用完后释放内存的过程

内存管理不当造成的主要问题便是内存泄漏和过度释放,虽然 ARC 使我们可以不去关注内存管理上的一些细节问题,但掌握一些相关知识还是很有必要的。

iOS 多线程开发

多线程 - 合理的线程分配能够提高程序的执行效率和资源利用率。

GCD 基于 C API,Operation Queue 是在 GCD 基础上实现的,效率上较 GCD 会差一点点,但代码可读性和易用性较高,简单的任务可用 GCD 去实现,复杂一些的还是推荐使用 Operation Queue 来处理。微小的性能提升远不如写出可维护性高的代码来的实在。

iOS 应用的生命周期

生命周期 - 程序的生命周期是指应用程序从启动到结束整个阶段的全过程.

点击应用图标打开程序,系统会首先通过 main 函数进行相关设置,然后通过 RunLoop 保持程序能够始终运行并监听处理分发事件,当没有事件发生时 RunLoop 便处于睡眠状态,节省资源。当发生事件后,RunLoop 将事件对象分发给相应视图处理。当用户按下 Home 键,应用会在进入后台后短暂运行,直到被系统挂起。