_objc_init
_objc_init 是 Objective-C 运行时系统的一个内部函数,它在应用程序启动时被 dyld(动态链接器)调用,以初始化 Objective-C 运行时环境。这个函数是 Objective-C 运行时的入口点,负责设置运行时系统的核心数据结构和执行必要的初始化操作。 _objc_init 的逻辑如下:
- environ_init:读取影响运行时的环境变量,如果需要还可以打印环境变量帮助
- static_init:运行 C++ 静态构造函数
- runtime_init:分类表的初始化和类表的初始化
- exception_init: 初始化异常处理系统
- cache_t::init:类的缓存 cache_t
- _dyld_objc_register_callbacks: 向 dyld 注册回调通知
Objective-C 语言局限性
Objective-C 是一门古老而又成熟的编程语言,它基于 C 语言,并加入了面向对象的特性。自从 NeXTStep 时代以来,它一直是苹果生态系统中的主要编程语言。然而,随着技术的发展和新语言的出现,Objective-C 也显示出了一些缺陷和局限性。以下是一些被广泛认为的 Objective-C 语言的局限性:
- 语法复杂性:相比于现代编程语言较为复杂,且使用 [] 来发送消息,可能让新开发者感到困惑
- 动态性带来的性能问题:消息发送机制的性能与静态语言相比仍有一定的差距
- 缺少现代编程特性:如可选类型、类型推断、函数式编程特性、元组、模式匹配等
- 类型系统限制:没有强类型检查,有些问题运行时才会暴露出来
- ARC(自动引用计数)的局限性:虽然 ARC 大大简化了内存管理,但在某些情况下,它仍然可能导致循环引用和内存泄漏
- 与 C++ 的兼容性:虽然可以通过 Objective-C++ 来混合使用两种语言,但这通常会带来额外的复杂性和潜在的风险
- 命名空间问题:不支持命名空间,可能导致类和函数名称冲突,开发者需要通过前缀或其他机制来避免命名冲突
RocketSim
RocketSim 是一个为开发者设计的工具,用于增强 Xcode 模拟器的功能。它提供了一系列实用的功能,帮助开发者更高效地构建和测试应用程序。 主要特点包括:
- 设计比较:允许开发者将设计图直接放入比较工具中,以验证实现的准确性
- 网格和标尺:提供网格覆盖和水平和垂直标尺,帮助精确对齐和定位元素
- 用户默认编辑器:实时编辑标准用户默认设置,便于测试应用程序对用户默认更改的响应
- 快速操作:为Deep Links和推送通知提供可配置的操作,便于测试
- 位置模拟:允许模拟单个位置或驾车和步行路线
- 等等
Xcode Bookmarks
Xcode 书签功能,这是一种在 Xcode 15 中引入的新特性,允许开发者保存代码的重要位置,帮助组织任务和提高工作效率。 Xcode 书签的主要特点包括:
- 书签导航器:位于 Xcode 左侧的检查器标签视图中,可以添加、删除、复制和重制书签
- 创建自定义地标描述:可以为代码行添加自定义描述
- 分组地标:在大型项目中,可以将书签分组,便于管理
- 添加新书签:可以通过右键目标添加新书签,也可以使用快速操作通过键盘添加
- 书签搜索查询:除了代码和文件引用,还可以保存搜索查询,便于重用
- 实用 Xcode 书签作为待办事项列表:可以用书签来管理待办事项,如需编写的测试等