理解 Swift:Objective-C 的构建管道

原文地址:Manual Swift: Understanding the Swift/Objective-C Build Pipeline

Xcode 是如何将 Swift 和 Obj-C 编译到一起的?
如果你没有 xcodebuild 的话,应该要怎么做?
我们来看看“编译到一起”两种不同的方式:

  • Obj-C 使用 Swift
  • Swift 使用 Obj-C
    今天,我们将会使用 Swift 的风格来看待 Obj-C,目的是让你对这些处理过程的线索有个大致理解。改天我们再挖掘这些线索在实际过程中是如何做到的。

2015 年终总结

一直都没有写年终总结的习惯,总是觉得:没什么好写的;过去一年发生的事有记忆记录着,没必要靠文字来记录。也是因为懒,懒得去写什么长篇大论的总结。现在开始不一样了,过去一年发生的事太多了,也是这一年开始发觉记忆不太好使了。内心想说的话,该用文字记录下来,否则怕自己忘了,怕未来丢失了现在的自己。

NSMutableArray原理揭露

本文翻译自 Exposing NSMutableArray,译文原地址为NSMutableArray 原理揭露

以下为译文:

我总好奇 NSMutableArray 内部是如何工作的。别误会,不可变数组确实提供了极大的便利。它们不仅线程安全,在对它们进行拷贝时也是完全自由的。但这些改变不了它们死板的事实——它们的内容不可被修改。我发现实际内存操作的细节很迷人,这也是我这篇文章聚焦于可变数组的原因。

当我在说明我是如何研究 NSMutableArray 的整个过程时,这篇文章会得相当具有技术性。会有一整个章节讨论 ARM64 汇编 (the ARM64 assembly),所以当你感觉到无聊时,不要犹豫,直接跳过那部分内容。一旦我们讨论完那些底层细节,我会展示关于这个类的隐藏特性。

NSmutableArray 的实现细节之所以私有是有原因的。得益于其底下的子类 (underlying subclasses) 和 ivar 布局 (ivar layouts),还有算法和数据结构的支撑,它们几乎可以随时改变。无视掉那些注意事项,我们值得去掀开 NSMutableArray 的引擎盖窥视一番,搞清楚它是如何工作的和能期望它做什么。接下来的学习基于 iOS 7.0 SDK。

和往常一样,你可以在我的GitHub上找到接下来的 Xcode 项目。

Linux常用命令

这是在看《鸟哥的Linux私房菜基础学习篇》做的一份表,目的是为了在自己忘记的时候方便查阅,毕竟连命令名都忘记,很难通过 man 命令查到。因为 Linux 的命令实在太多,这份表仅能包含常用命令,查不到的命令可以通过 tab 键和 man、info命令找到。

使用频率较高的命令

命令 功能
man 查看指令说明
info 分段落查看指令说明,与man类似
whatis 输出man里面的短描述,相当于man -f
apropos 通过关键字搜索man,相当于man -k
shutdown 关机
reboot, halt, poweroff 重启与关机
ls 输出目录列表
cd 切换到指定目录
cp 复制文件或目录
mv 移动文件或目录
rm 删除文件
cat/tac/nl 链接并输出文件内容,tac为倒着输出,nl则输出行号
more/less 一页页显示文件内容,less可往前翻页
head/tail 只输出文件内容头/尾几行
od 以二进制输出文件内容
pwd 输出当前工作目录路径
basename 从一个路径中取出文件名
dirname 从一个路径中取出路径名
mkdir 新建目录
rmdir 删除空目录
chgrp 更改文件所属群组
chown 更改文件拥有者
chmod 更改文件的权限
groupadd 新建群组
useradd 新建用户
id 查阅用户的属性
umask 文件的预设权限
touch 新建空文件或修改文件时间
su 切换用户
exit 退出一个状态
date 显示日期与时间
cal 显示日历
echo 输出一行文本
sync 同步硬盘数据
init 切换登录模式
uname 输出系统相关信息
chattr 配置文件隐藏属性
lsattr 查看文件隐藏属性
file 查看文件类型
which 寻找可执行的命令
whereis/locate/find 寻找文件
chsh 更改默认shell