ios开发之认知ios工程结构

简单的新建一个ios工程,我们选用SingleView Application,xcode会给我们生成ios的工程结构,这就是所有软件开发中通常的helloword工程^_^。
这里写图片描述

默认创建好的ios工程界面如下:
这里写图片描述

所有的helloworld工程都是可以直接启动运行的。ios也不例外。左上角选择iphone的模拟器版本,command+R就可以直接看到运行效果了。

整个ios工程包括了4个部分,在工程创建好时,默认选中了最上面的蓝色的工程文件(实际上是以xcodeproj为后缀名的工程文件,任何mac或者ios工程都可以直接的双击这个蓝色这里写图片描述 的文件来直接将整个工程在xcode中打开)。
如上图所示,右侧展示了一排分类的信息:General,Capablilities,info,BuildSettings,BuildPhases,BuildRules。实际上就是关于该工程的所有信息和可配置信息。

1、General
General中详细列出了该工程的配置信息,关于工程名称版本,版本号,适配的设备,界面首选项,设备适配方向,app的icon图标设置都在这里。这个很有安卓中的androidManifest.xml的味道。

2、Capabilities:功能
这里面列的东西很多。
这里写图片描述
我也不知道列表中那些都是做什么的,怎么办呢?苹果做这么叼的东西总得给文档来说明一下吧。怎么去找,很简单:
我们在这个列表区域点击右键,会弹出xcode的help帮助提示窗:
它已经给我们列出了该部分中可供选择的帮助内容
这里写图片描述
简直不能更帅了,要的就是这些帮助内容。点击去看看官方的说明吧。

界面类似如下图:
这里写图片描述
苹果公司对这6部分都分别进行了分项介绍,内容比较简短,详细的信息我们需要通过点击每一篇介绍的左下角的文字连接“Related Articles”中提供的参考文档来查看详细的操作介绍。
比如,我们现在关心的是Capbilities是咋回事:这里写图片描述
我们就可以阅读Adding Capabilities文档中的内容来知道是咋回事了,文档中对每一部分都有详细的操作介绍。总的来说,就是为我们的app设置某些扩展的能力,比如 icloud数据同步和共享,backgound mode后台模式设置,以及routing app 与其他的app进行点对点的通信等功能。

3、info:
info中展示的内容实际上和我们的ios工程中 Supporing Files文件夹下的info.plist中的内容是一样的。都是键值对的方式展示的内容。但是官方文档没有对info的说明文档,那么我们就只有寄托于官网开发者网站了: https://developer.apple.com/,直接搜索info.plist,还不错,搜索到一些有效信息,我只需要关注ios的Reference就ok了:
这里写图片描述
文章好长,那么找一篇现成的博客来帮助理解:
iOS工程中的info.plist文件的完整研究

4、BuildSettings、BuildPhases、BuildRules
BuildSettings、BuildPhases、BuildRules都是有关编译器的设置。
这里提供一篇很有用的博客:
去除掉xcode中的编译器警告

5、AppDelegate类 :从delegate这个词就可以看的出来,是app代理类。
从预生成代码可以看到,AppDelegate是继承自UIResponder的子类,并实现了UIApplication类的UIApplicationDelegate协议。
UIApplicationDelegate协议中有超多的以application为开头的实例方法,也就是对应了app的所有的状态的回调方法包括了:app加载完成,app将要加载完成,app已经恢复活跃,app已经进入后台状态,app接收到内存警告,app接收到本地消息通知等等。我们只需要在需要的情况下去实现指定的协议方法来进行我们所需要的整个app层面的相关操作就ok了。

6、ViewController类:
从名字看,就是控制View的类,我们也看到它继承自UIViewController,但是再深一步查看,UIViewController也是继承自UIResponder。 ViewController是作为MVC工程模式的C来定位的,和安卓的Activity是极其相似的。都是负责对界面控件的管理和逻辑关系的处理。
从工程预生成的代码可以看出ViewController继承自UIViewController类,而UIViewController同样继承自UIResponder并实现了4个协议:
NSCoding, UIAppearanceContainer, UITraitEnvironment, UIContentContainer
UIViewController有很多view相关的属性以及nib,storyboard的属性和布局加载方法,UIViewController提供了布局界面加载的全过程回调方法:
包括:viewWillAppear,viewDidAppear,viewWillDisappear,viewDidDisappear,viewDidLoad,viewWillUnload,viewDidUnload,
最常用的就是viewDidLoad方法来对加载界面完毕时执行相关的一些逻辑处理操作。
作为View的controller,除了控制布局界面加载的流程,还有就是关于view的手势操作响应等操作(毕竟是继承自UIResponder类)。

7、Main.storyboard 故事板
故事板可以说是UIViewController的集合,故事板可以创建多个UIViewController界面,但是只能允许有一个起始界面,其他界面通过关联和逻辑控制来进行展示。
8、LaunchScreen.xib nib布局文件。xib文件和storyboard故事板本质上都是xml文件,可以使用能打开xml的软件打开。这个和安卓开发使用xml布局文件是极其类似的。只是ios的的布局文件可视化做的非常好,以至于你可以不用写一句代码都可以布出一个界面来。xib(老版本为nib)文件和UIViewController是一对一的关联关系,而storyboard则和UIViewController是一对多的关系,storyboard中有多少个UIViewController界面就需要对应有多少个绑定的UIViewController子类。

9、Images.xcassets:可以放置工程中的图片,并可以设置工程的图标素材。
有关于它的使用,我们是可以直接的在api文档中查看到的:
这里写图片描述
我们直接的在api帮助文档中搜索 images.xcassets就可以看到官方文档为app icons on ipad and iphone。如果看英文头疼,可以去搜索一些博客来查看其使用,这里提供一篇供参考:
iOS7初体验(3)——图像资源Images Assets
注意:Images.xcassets是一个文件夹这里写图片描述,不是黄色的group这里写图片描述,(虽然外观像是个文件夹,但是在ios工程中要创建它,则是group:)这里写图片描述
文件夹和group的区别:文件夹中的资源在访问时需要加上资源路径。但是组中的资源就不用:
比如图片素材:icon.png,如果放置在Images文件夹中,则访问路径为:
Images/icon.png,如果放置在Images组,那么访问就直接的使用 icon.png。

10、LaunchScreen.xib 默认的登陆界面。我们可以在最上面提到的工程的general选项中来修改登陆界面:
这里写图片描述

11、Supporting Files 组:提供了一些支持文件,主要有工程属性配置文件 info.plist和ios app的入口文件 main.m文件。
另外,Supporting Files组中还有其他的文件:
xxx.strings 工程本地化的字符串文件,这个就类似安卓中的字符串资
源文件了
工程名+Prefix.pch 这个文件中可以引入一些头文件,这样工程中的其
他文件就不需要在引入了。

关于main.m的理解,没有搜索到官网的帮助文档,这里提供一篇博客供参考:iOS Dev (38) 你不一定看懂了 main.m 文件

12、HelloWorldTests文件夹:
看到名字就能明白了,这个文件夹中的文件是供单元测试使用的。查看了其他人的一些早期的博客才知道,这个测试工程在早期的版本中不是自动创建的。现在已经是默认创建的了。
关于单元测试,我们可以在帮助文档中搜索 unit test,可以看到苹果提供了一个示例工程。我们可以导进xcode中来查看学习。
这里写图片描述
关于单元测试的博客,提供一篇供参考:
IOS 单元测试

13、Products文件夹:产品文件夹,我们也能直观的看到其中包括了编译生成的ios的app和测试文件。

好了,就写到这里吧,有描述错误的地方还请不吝批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值