开篇语
已经很久没写点东西了,上一次做笔记还得追述到两年前,由于工作的需要,最近几周开始接触iOS开发,在学习过程中,想给自己做一下记录,加深对知识点的记忆,同时也加强自己的文字能力;笔记所涉及到的都是很基础的知识点,因为是刚刚接触iOS开发,所以在有些知识点的理解上可能出现错误,还望大家帮忙指正。
开发环境及工具说明
Mac系统和XCode编译器想必大家都知道,XCode本身已经集成了完整的开发所需的工具(这个比原来使用eclipse进行Android开发要好的太多,当然AS也挺好的),XCode内置的XCode IDE、性能分析工具、iOS SDK、iOS模拟器和最新的OS X,都是开发能够更好的进行iOS APP的开发。iOS开发中用到类名和方法名,都是具有语义化的,从名称上就能看出其作用,当然,这也使得名称变得很长,这让我这类从Android转iOS的有些许不适应;XCode有着强大的OC代码提示和自动补全功能,这对于一些新人或者不太愿意去记(记忆力不好)各种类名、方法名的同学,非常有用,XCode还为我们提供了很多高效的快捷键,这大大提高了编码的效率。因此,对于要做iOS开发的小伙伴,拥有一台装有Mac OS X的电脑,并安装上XCode是必须的。这篇笔记是基于iOS10和XCode8.0来写的。
创建第一个iOS APP的步骤
- 创建一个ios项目
- 1、将鼠标移到XCode左上角,在弹出的标题栏上选择File–>New–>Project,如下图
- 2、模板选择界面,在XCode8上有五个类目的模板,分别为iOS、watchOS、tvOS、macOS和跨平台模板Cross-Platform,如下图
以下对iOS的模板进行简单描述:
- Single View Application:单视图应用程序
- This template provides a starting point for an application that uses a single view. It provides a view controller to manage the view, and a storyboard or nib file that contains the view.
- 此模板为使用单一视图的应用程序提供了一个起点。它通过提供一个视图控制器,和一个storyboard或nib视图文件来管理应用界面的各个视图控件。最常用的应用模版。
- Game:游戏应用程序模板
- 如果你要创建3D游戏或者图形,可以使用这个模板。它会创建一个配置好的视图,专门用来显示GL场景,并提供了一个例子计时器可以令其演示动画。
- Master-Detail Application:创建基于主从视图的应用程序
- This template provides a starting point for a master-detail application. It provides a user interface configured with a navigation controller to display a list of items and also a split view on iPad.
- 很多有过一些开发经验的程序员会发现现在为iPhone的Navigation(导航模式)和为iPad的Split(分割模式)的工程模板没有了,其实这个地方就是这两种工程的入口,如果你选择是iPhone版的Master-Detail Application,其实际生成的就是Navigation(导航模式),如果选择iPad,则为Split(分割模式),拓展创建基于主-从视图的应用程序
- Page-Based Application:翻页应用模板
- This template provides a starting point for a page-based application that uses a page view controller.
- 这个是iOS5引入的一个新的类,page view controller,其翻页效果是基于OpenGLES实现的。选择“Page-based Application”项目模板就可以利用这个模板创建一种“基于页”的应用程序。
- Tabbed Application:标签应用
- This template provides a starting point for an application that uses a tab bar. It provides a user interface configured with a tab bar controller, and view controllers for the tab bar items.
- 提供了一种特殊的控制器,会沿着屏幕底部显示一个按钮栏。这个模板适用于像iPod或者电话这样的应用程序,它们都会在底部显示一行标签,提供一系列的快捷方式。简单说就是创建一个选项卡多视图应用程序。
- iMessage Application和Sticker Pack Application
- 在Xcode8、iOS10SDK上新建iOS工程你将看到iMessage Application和Sticker Pack Application,后者是为iMessage表情包专门准备的,但是不需要代码。这两个新的模板还没尝试使用过,其实目前很火爆的微信小程序与iMessage Application就很相似。相关链接:使用 Xcode 8 为 iMessage 创建表情包插件、ios 10 sticker pack application
- Cocoa Touch Framework:创建动态库
- 使用静态库的好处:
a、模块化,分工合作
b、避免少量改动经常导致大量的重复编译连接
c、也可以重用,但不是共享使用
- 使用静态库的好处:
- Cocoa Touch Static Library:创建静态库
- 使用动态库的好处:
a、使用动态库,可以将最终可执行文件体积缩小
b、使用动态库,多个应用程序共享内存中得同一份库文件,节省资源
c、使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的
- 使用动态库的好处:
- Metal Library:创建Metal库
- 暂不加于说明,做游戏开发的应该会接触的比较多,用于3D图形处理的。
- Single View Application:单视图应用程序
在这里我们只关注Single View Application,选择iOS下的Single View Application,点击next。
- 3、来到项目选项设置界面,这些设置在项目配置界面是可以修改的,如下图
字段说明:
- a、Product Name:工程名
- b、Team:团队(在App Store上注册的,在模拟机上运行项目时不需要,但是如果是团队开发就需要注意了)
- c、Organization Name:组织名
- d、Organization Identifier:组织身份证
- e、Bundle Identifier:Bundle ID
- f、Language:语言选项,有Objective-C和Swift两种语言,默认Objective-C
- g、Devices:设备选项,有Universal、iPhone和iPad三种设备,默认iPhone
- h、Use Core Data:Core Data是一个框架,以让开发者很方便的,以对象的方式,去调用对应的数据存取接口存取数据,是数据持久化存储的最佳方式。iphone数据存储之-- Core Data的使用
- i. Include Unit Tests和Include UI Tests:这两个都是Xcode自带测试工具,勾选是会为你的项目集成单元测试,在项目开发过程中非常有用。Xcode:为你的项目集成单元测试(unit tests)时记得避开这些坑
- 4、最后一步, 择项目存储位置后点击窗口右下角Create按钮,完成应用创建过程。
图中1为所选位置,2为新建文件夹,点击create后会看到以下界面
在这里,就可以看到我们在第三步的设置,当然也可以进行修改;这里XCode对不同类型的配置信息进行分组,Indentity(app身份信息)、Signing(签名)、Deployment Info(发布信息)、App Icons and Launch Images(app图标和启动图片)、Embedded Binaries(嵌入二进制文件<即,授权文件>)和Linked Frameworks and Libraries(框架和库链接)。
我们目前先只关注Deployment Info下的Main Interface,这里默认为Main,就是以Main.storyboard作为程序的入口界面,Main.storyboard会自动关联到默认生成的ViewController,我们在ViewController的viewDidLoad方法中输出一行日志NSLog(@”这是我的第一个iOS APP”),看下图:
- 5、编译和运行项目,点击XCode左上角的三角图标(快捷键command+r),运行之后,我们能在All Output中看到打印的日志;由于我们在Main.storyboard中没有拖入任何控件,因此,在模拟器上APP界面显示是空白的,如下图。
- 程序目录结构说明
- 1、项目创建完成之后,Xcode会进入项目开发界面,界面大致分为三部分,左侧项目及目录结构列表、中间为代码编辑区、右侧属性设置和控件列表等区域,正如上面我们创建完项目所看到的。下面是目录结构的截图:
项目初始时至少会有MyFirstApp和Products两个目录,在图中之所以会有MyFirstAppTests和MyFirstAppUITests这两个目录,是因为我们在创建项目的第三步中勾选了Include Unit Tests和Include UI Tests,因此在项目中集成了单元测试;在项目开发过程中,开发者也可以自行根据情况添加目录。以下是简单的目录说明:
- MyFirstApp:目录与项目名称同名,主要存放应用相关源代码和配置文件;
- MyFirstAppTests:用于单元测试的;
- MyFirstAppUITests:用于进行UI测试;
- Products:用于存放生成的应用文件,文件名显示为红色,表明实际不存在这个文件,开发中开发者一般不必关心。
总结
这篇笔记就先记录到这里吧,原本还想对OC基础数据类型(NS系列的基础数据类型)、运行和调试(模拟器,自定义模拟器设置,NSLog日志输出)进行简单的记录的,但是实在有点累,而且太久没有做笔记了,一下子感觉思路有点混乱,在之后会另外记一篇关于数据类型、运行和调试相关的笔记。
~#虽然笔记质量欠佳,但是还是希望自己能够坚持写下去!#~