若是同一个应用, 须要作一个带广告Lite版本, 一个不带广告的Pro版本. 那么问题来了, 该如何优雅的去实现呢?
git
通常来讲有两种实现方法:github
一个把当前工程拷贝而后再修改, 这样作会致使后期维护成本太高, 每次修改都要同时改两个工程, 到后期修改简直提心掉胆, 不过操做傻瓜式.spa
另一个种就是在一个Project里面建立两个Target, 而后经过判断Target来修改代码, 这样都是基于同一套代码作修改, 只是部分不相同的地方经过Target来添加不一样代码, 后期修改维护成本低, 推荐你们使用这种方式..net
不想看教程的童鞋, 点击这里能够下载我已经完成好的代码.设计
建立两个Target:code
1.首先先选中Target一个已经存在的版本, 右键 Duplicateorm
2.而后在弹出来的选择框选择 Duplicate Only教程
3.建立完以后你的新Target应该是和个人同样, 接下来咱们就要修改Target, Scheme, Info-plist, 如图这样修改:图片
4.修改完了以后Target, Scheme, plist的名字以后, 你须要在新的Target添加对应的plist文件, 修改CFBundleDisplayName就能够修改应用的名字了.ip
5.还要记得修改一下Product Name 否则你的Bundle Identifier的后缀名有copy和你的Target名字不同, 你还须要在Bundle Setting作一下修改.
开始为两个不一样的应用添加不一样的AppIcon, LaunchImage
在这个选择使用Images.xcassets里面设置AppIcon和LaunchImage, 注意这里一个是AppIcon,另外一个是AppIcon-2, 之后编译Target的时候他就会跟随这里的设置去拿了开机图和Icon
2.进入Images.xcassets看下图片是否是都是勾选了两个Target, 保持和我下图同样的勾选, 若是没有勾选的话, 你在编译的不一样Target的时候会获取不到资源.
3.选择不一样Target进行编译, 你的运行结果应该和个人截图同样, 有着不一样的AppName和AppIcon,还有不一样的LaunchImage,可是代码是共用, 到这里你已经成功了一半了, 接下来你确定是想知道如何在代码里面区别不一样Target, 而后给它们添加其余的特性.
在代码里面利用宏定义来区分不一样的Traget
1.在Bundle Setting里面设置一下Proprecessor Macros添加一份KFREE KPRO的参数来区分究竟是那个Traget. 在代码里面为须要用到这个宏去判断代码块.
2.在代码里面添加Proprecessor Macros里面宏定义, 你就会发现编译以前Xcode就会智能的选择不一样代码. 这样你就共用一个项目管理两个不一样版本的应用了, 大部分的代码都复用, 维护管理很是轻松.
总结:
苹果每一年都会推出新的技术, 都是为了减小开发成本和更好的设计, 做为开发者的开发模式应当和苹果的理念一致. 用最优雅, 简洁的方式去实现功能.