Launch Arguments 启动参数
任何参数将会在执行期间覆盖在NSUserDefaults中的值。可以用于特定领域的测试和调试
设置启动参数
设置启动参数,可以从Xcode左上角,点击target “Edit Scheme…”,在“Arguments”选项卡。
启动参数仅仅有一个输入框,需要以-号开始,列如:-aLaunchArgument
代码访问启动参数
正如前面提到的,我们的应用程序是操作系统上运行的进程,因此,我们需要使用NSProcessInfo
访问这些选项。
1 2 3 |
if ([[[NSProcessInfo processInfo] arguments] containsObject:@"-skip_onboarding"]) { // Load main screen } |
如果您正在开发iOS(没有试过在OS X)启动参数将被设置在NSUserDefaults中,因此上述相当于
1 2 3 |
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"skip_onboarding"]) { // Load main screen } |
Environment Variables 环境变量
设置环境变量
设置环境变量,可以从Xcode左上角,点击target “Edit Scheme…”,在“Arguments”选项卡。
启动参数有两个输入框,一个是名称name一个是值value
代码访问环境变量
1 2 3 4 5 6 |
NSDictionary *environment = [[NSProcessInfo processInfo] environment]; if (environment[@"server_url"]) { // Set server url with the value in the environment } else { // Set the default one } |
Preprocessor Macros 预处理宏
在Xcode6下的路径为Build Settings->Apple LLVM 6.x Preprocessing->Preprocessor Macros
想必大家看这个宏的名字已经知道它的作用了, 实际上就是和在pch头文件中添加宏定义没有太大的区别, 实际上还是有一些好处:
- Xcode的Project的Build Settings是由一个plist文件进行描述的, plist本质上是一个XML配置文件, 通过外部的脚本比较容易去修改。
- Preprocessor Macros可以按照Configuration选项进行默认配置, 也就是说可以根据不同的环境预先制定不同定义的宏
- xcconfig配置Build Settings
设置预处理宏
可以从Project文件下的Build Settings->Apple LLVM 6.x Preprocessing->Preprocessor Macros对预编译宏定义进行默认赋值。
代码访问预处理宏
1 2 3 4 5 |
#ifdef XXXXX //do sth. #else //do sth. #endif |
参考 http://mokagio.github.io/tech-journal/2015/03/03/xcode-launch-arguments.html
延伸 http://nshipster.com/launch-arguments-and-environment-variables/