User Defined Setting

属性说明

User Defined 是一个Xcode中十分强大的功能,它能够配置一些你在Interface Builder中不能配置的属性,进而很大程度上提高开发效率。在项目中使用User Defined Setting可以定义一些Xcode编译使用的宏配置,为了实现App的一些常量或属性值在不同运行环境下配置不同,可以在User Defined Setting中定义一些有关应用程序的配置。

应用场景

  1. 实际开发中,对应于开发、测试、生产等不同环境,会使用多套域名,开发者在项目中设置User Defined,以达到域名因环境变化而不同的隔离效果;
  2. 可以设置布尔类型的属性对应于不同环境,这样可以控制不同环境设置不同变量,甚至执行不同代码。

配置步骤

  1. 创建新的User Defined Settings

在Xcode中选中TARGETS–>Build Settings选中上方导航栏Edior选项,下拉菜单Add Build Setting–>Add User Defined Setting;

  • Xcode截图1

Xcode截图1

或者直接在Build Settings下方菜单栏Levels右边点击+,即可创建新的User Defined Setting。

  • Xcode截图2

Xcode截图2

  1. 添加User Defined Setting内容

为区分配置选项,可将配置环境分为:Debug、Release和add-hoc等,分别配置不同的字符串以提供在代码中根据环境不同替换达到自动生成的效果。

  • Xcode截图3
    Xcode截图3
  1. 配置Compiler Flags

此时必需告诉Xcode你需要在哪里引用User Defined Setting的属性值,指向的是哪一个User Defined Setting。在Build Phases中搜索你需要使用User Defiend Setting 的文件,然后给该文件加上Compiler Flags,以配置域名为例: -D‘APP_SERVER_ID=@”$(server)”‘, 其中APP_SERVER_ID为宏名称,用来对应User-Defined Setting的名称即server。

  • Xcode截图4
    Xcode截图4

如需了解更多配置细节可前往查看Apple官方配置说明:Adding User Defined Runtime Attributes

如何使用

在选择的文件中,定义一个宏,宏的值即对应不同环境时User Defined配置值,在代码中引用宏,就可以做到自动根据部署环境替换相应配置了。

  • Xcode截图5
    Xcode截图5

写在最后

本文结合了笔者在Apple的官方文档和Stack Overflow上的爬坑所获,配置过程并不复杂,应用场景需要进一步探索,其功能之强大只有用过了才知道。如果对这篇文章有任何疑问,欢迎以评论或者微博的方式进行交流,希望对您有所帮助。

设置的过程有些繁琐,比较容易忘记,因此要熟练掌握。这可以说是Xcode配置中的一个很强大的功能,设置一次就可一劳永逸啦~