创建项目,语言选择Swift,Devices选择Universal,使用Size Classes适配iPhone,iPad,实际项目一般是iPhone,iPad分开按照设计开发的,我们项目是用于学习目的的,所以就按照简单的来,没有用到Core Data.
Unit Tests代表XCTest,这是内嵌到Xcode的测试框架,利用它可以对App进行功能和性能测试,具体使用可以参考
http://www.cocoachina.com/industry/20140805/9314.html
UI Tests是一个自动测试UI与交互的Testing组件,它可以通过编写代码、或者是记录开发者的操作过程并代码化,来实现自动点击某个按钮、视图,或者自动输入文字等功能。具体使用可以参考
http://www.cocoachina.com/ios/20150925/13566.html
打开项目
点击项目->选择General,配置项目的一些基本信息
Bundle Identifier:是应用的标识符,表明应用和其他App的区别,上传到App Store时候需要,一般为企业的域名倒写
Version:通常说的版本号, 是应用向用户宣传说明时候用到的标识. 一般有2段或者3段式, 如:2.1,8.1.2,一般由产品部门确定, 完全迥异的更新需要改变主版本号, 比如QQ 4.0的变化非常大, 主版本的变化会更加吸引用户的眼球,所以有的应用会频繁的更新主版本号, 比如FireFox 20.0. 两段式的副版本号既包含小功能更新也会包含 bug 修复等,三段式副版本基本都是新功能添加和大问题修复,第三段则表示稳定版本基本都是修复 bug
Build:编译号指一次唯一编译标识,都是给内部使用, 用来确定一个唯一版本. 与 Version 没有太大联系
Team:如果是团队协作开发,一般会给你分配一个邮箱的Team Account,用来生成证书.
Deployment Target:设置为你所支持的最低的iOS版本,这就涉及到项目中的适配系统的问题了,这方面Swift2.0做的非常好.
Devices:建议是如果你的App,iPad版本跟iPhone版本的界面是差不多的,就做兼容iPad和iPhone的app,选择Universal,否则就分开做iPad版、iPhone版。只有iPhone或者iPad版本就选择相应的版本.
Main Interface:主要用Storyboard开发界面,启动后第一个加载这个Storyboard中的Initial View Controller
Devices Orientation:App支持的屏幕方向,这个根据实际项目需求配置,当然也可以在代码里面控制单个Controller的orientation.
Status Bar Style:App统一的状态栏设置,也可以在代码里面控制单个控制器的状态栏.
App Icons Source:点击小箭头进入设计界面,根据支持的设备和系统的不同会需要不同数量和分辨率的Icon图片,点击一张图,右侧栏的image可以看到需要的图片Size和Scale,实际图片的分辨率是Size * Scale得到的.
Lauch Image Source和Lauch Screen File:如果你需要支持8.0以前的系统,那必须要用Lauch Image,配置和App Icons类似,8.0后新增加一种使用nib方式设计启动图,这样你只需要一张高清或者完全不需要图片就可以制作非常精美的启动界面,减少设计的工作,同时也减少了App的体积.
Embedded Binaries: 如果导入的是动态库,需要加到这里.
静态库和动态库的区别
静态库:这类库的名字一般是.a,利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。
动态库:这类库的名字一般是后缀是.framework相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。
动态库都可以用于不同应用间共享,这就大大节省了内存。从目前来看,iOS仍然不允许进程间共享动态库,即iOS上的动态库只能是私有的,因为我们仍然不能将动态库文件放置在除了自身沙盒以外的其它任何地方。 不过iOS8上开放了App Extension功能,可以为一个应用创建插件,这样主app和插件之间共享动态库还是可行的。