将 Obj-C 代码翻译为 C/C++ 代码

Objective-C => C/C++
Read more →

Obj-C 中的 Block

从 OS X Snow Leopard 和 iOS 4 开始,Apple 引入了 Block 的概念。Obj-C 中的 Block 即通常意义上的匿名函数,而之所以引入是因为 C 语言中并不支持匿名函数。这使得 Block 在 Obj-C 中可以称为是一类公民,既可以作为类的属性,也可以作为函数参数或返回值来传递。那么本文就将着眼于此,谈谈 Obj-C 中的 Block。
Read more →

《编写高质量 iOS 与 OS X 代码的 52 个有效方法》阅读笔记

《编写高质量 iOS 与 OS X 代码的 52 个有效方法》原著名为《Effective Objective-C 2.0》,是类似笔者这样的 iOS 初级入门者必读书目之一。本文不仅是此书的阅读笔记,也有 Demo 代码等,较为独立的篇章内容则融入笔者的独立文章中。
Read more →

双 11 买买买 - 开始抢购啦 💰

➡️ 618 远去了… 双十一又来啦!种草计划 —— 开启~
Read more →

iOS 中的库与框架

随着软件工程的发展,很多我们需要的功能前人都已经很好地实现了,为了提高效率避免重复建设,这些功能实现的代码被封装为代码库,有时也称框架。我们只需要在用到的时候通过依赖管理工具将它们以适当的方式引入即可。本文将简单聊聊 iOS 中的库与框架相关概念。
Read more →

iOS 中的 Category

iOS 中的 Category 中文常译作分类、类别。我们经常会使用 Category 来对一个类进行扩展,使得在不破坏主类结构的同时可以具备更多的功能;也可以使用 Category 对一个类进行拆分,使得其结构更加清晰条理。本文将从 What - How - Why 谈谈 iOS 中 Category。
Read more →

浅尝 objc_msgSend

Obj-C 中方法调用的本质是消息发送机制,即 [foo bar] 是向 foo 对象发送一条 bar 的消息,而消息发送就是通过 objc_msgSend 所进行的。那么这次本文就简单窥探一下 objc_msgSend 吧。
Read more →

与 Visual Studio Code 共舞

VS Code(全称 Visual Studio Code),是微软推出的一款插件化编辑器。比 IDE 轻量,又比终端更容易上手,本文将罗列一些我在使用的设置、配置、插件等,也欢迎大家建言献策~
Read more →

iOS 自动化测试之 WDA & Appium

Test automation in iOS from scratch.
Read more →

iOS 中的 +load 方法

在 iOS 开发中,我们经常会使用 +load 方法来做一些在 main 函数之前的操作,比如方法交换(Method Swizzle)等。那么本文就来简单了解下 iOS 中 +load 方法。
Read more →

App Store 面面观

一款 app 从开发者手里到最终交付到用户桌面的整个过程中,编写代码只是其中小小的一环,我们需要搭建相应的开发环境、分发完整产物进行测试、并最终将其配以合适的宣传文案以供用户享用。本文将叙述作为一名一线 iOS 开发者与 App Store「打交道」的纪实经历。
Read more →

SwiftTips in Reverse

SwiftTipsJohn Sundell 在 GitHub 开源的 Swift 小技巧列表。随着 Swift 5 的发布以及 ABI 稳定,是时候再学习一遍 Swift 啦。本文将是该列表的实践版本,并保证文中代码的可运行性,且尽可能做到倒序日更。(But why in reverse? 🤫)
Read more →

Obj-C 中的 isa 指针

isa 指针是所有 Obj-C 对象中都拥有的一个成员。因为除了继承链之外,Obj-C 还特有一条从实例对象到类对象、元类对象的链。而后者正是依靠 isa 而串联起来的,那么本文就将结合源码谈谈 Obj-C 中的 isa
Read more →

C/C++ 中的位域与共用体

C/C++ 中有许多「奇技淫巧」来让开发者能够以效率更高的方式使用内存,这也是一些高级语言着力去避讳的一点,但这种能够直面内存细节的「踏实感」让我个人觉得非常安心。本文将简单涉及 C/C++ 中的位域与共用体的概念。
Read more →

Xcode 中的 Link Map 文件

Link Map File,译作链接映射文件。Xcode 在构建可执行文件之前,需要先编译为目标文件(Object File),并链接所需要的其他库,那么 Link Map 文件就记录了链接器(Linker)在链接过程中产生的一些信息,本文将谈谈这个文件的构成。
Read more →