Objective-C 运行时环境全解析
1. 运行时环境概述
Objective - C 应用程序的运行时环境有一些特性值得关注。它包含运行应用程序的 Mac OS X 进程的相关信息、环境变量、与父进程的连接等。部分特性继承自操作系统,其他则是 Objective - C 和 Cocoa 框架的特性。
2. 进程
在 Mac OS X 中,每个 Objective - C 程序都作为一个进程执行。虽然 Java 字节码在抽象虚拟机中执行,但多数虚拟机也在进程中运行且具有相似属性。每个进程包含:
- 内存地址空间
- 一个或多个执行线程
- 一组以键值对形式存储的环境变量
- 一个命令行参数字符串数组
在 Java 中,虚拟机可访问进程的本地地址空间,但程序员不能。而在 Objective - C 中,程序员可直接访问分配给进程的逻辑地址空间。硬件禁止直接访问进程本地地址空间外的内存地址,任何此类尝试都会导致内存地址违规,通常会使进程终止。访问进程外的资源需向内核发送消息,尽管一般不会直接这么做,但要知道所有与硬件或操作系统交互的 API 最终都会向内核发送消息。
在 Mac OS X 中,进程与主线程等同。只要主线程存在,进程就存在;主线程终止或使用 exit() 等函数有意终止进程时,进程结束。不过,也可以创建或销毁其他线程。
并非所有 Objective - C 代码都在独立进程中运行,它还可用于开发框架和插件。这些是代码和资源的集合,可被其他应用程序加载并在其环境中执行。例如,可通过向操作系统提供 Spotlight 插件包来为文档提供自
超级会员免费看
订阅专栏 解锁全文
1437

被折叠的 条评论
为什么被折叠?



