Objective-C 运行时环境全解析
1. 进程相关
在 Mac OS X 中,每个 Objective-C 程序都作为一个进程执行。进程包含以下要素:
- 内存地址空间
- 一个或多个执行线程
- 一组以键值对形式存在的环境变量
- 一个命令行参数数组
与 Java 不同,在 Objective-C 中,程序员可以直接访问分配给进程的逻辑地址空间。硬件禁止直接访问进程本地地址空间之外的内存地址,任何此类访问尝试都会导致内存地址违规,通常会导致进程终止。访问进程外的资源需向内核发送消息。
在 Mac OS X 中,进程与主线程同义,只要主线程存在,进程就存在;主线程终止或使用 exit() 等函数有意终止进程时,进程结束。不过,并非所有的 Objective-C 代码都在自己的进程中运行,它还可用于开发框架和插件,这些代码和资源包可被其他应用程序加载并在其环境中执行。
除了环境变量、命令行参数和进程属性外,每个进程还有一些特殊属性,如当前工作目录。
2. 环境变量
每个进程都会继承其父进程定义的环境,环境是一组键值字符串对,用于在进程间传递设置和其他信息。在 Java 中,可使用 java.lang.System.getenv() 或 java.lang.System.getenv(String) 获取环境变量;在 Objective-C 中,向通过 [NSProcessInfo processInfo] 获取的单例 NSProcessInf
超级会员免费看
订阅专栏 解锁全文
1465

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



