记录一个菜鸟的iOS学习之旅,如能帮助正在学习的你,亦枫不胜荣幸;如路过的大神如指教几句,亦枫感激涕淋!
最近想了想,还是决定写篇短文,简单介绍一下Xcode环境下iOS工程的目录结构,帮助大家对整个应用结构有一个初步的了解,便于后面深度的学习。这是一篇晚来的文章,应该作为《iOS学习之旅》系列文章的第二篇呈现给大家,不过现在出现也算为时未晚。
在Xcode中,新建工程的目录机构如上图所示。以图中的EduTest工程为例,导航视图中包含了存放源码的EduTest、存放单元测试代码的EduTestTests、存放编译结果的Products,其实在实际项目开发中,还需要用到存放第三方框架或者库文件的Frameworks,这样,就有了了由四个组构成的一个标准的项目结构。
这里有一个细节需要注意,就是工程结构中“组”和“文件夹”这两个概念。他们之间的区别主要体现在访问资源文件的时候。访问文件夹中的资源时需要在路径中添加相应文件夹目录名。拿图片资源来说,一个名为“launcher.png”的图片文件,放在image文件夹下,她的访问路径就是“image/launcher.png”,如果放在组下面,访问路径就是“launcher.png”。
就下来主要讲讲工程中四大组中最重要也是开发中最常用的一个组,即开发源码存放的组,这里就是上图中的EduTest。
EduTest组中包含了两大类:AppDelegate类和ViewController类,一个组:Supporting Files,和一个故事板文件:Main.storyboard。
AppDelegate是应用程序委托对象,继承自UIResponder类,并实现了UIApplicationDelegate委托协议。UIResponder类可以使子类AppDelegate具有处理相应事件的能力,而UIApplicationDelegate委托协议使AppDelegate能够成为应用程序委托对象,这种对象能够响应应用程序的生命周期。
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
ViewController是视图控制器,继承子UI View Controller,起到控制显示视图和处理视图触摸事件的作用。
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
Main.storyboard是故事板文件,包含了应用中的视图控制器场景,同时描述了多个视图控制器之间的导航连接关系。
Supporting File组通常包含4个文件,本文中使用的工程案例只用到了两个。这4个文件的作用如下:
- info.plist
工程描述的属性文件,通过XML的格式定义了一些工程中常用的属性功能,这些功能的使用这里就不一一介绍了,在以后的文章中通过实例的形式再逐一学习如何使用,可以先看看其中的内容;
- main.m
应用程序入口文件,程序的运行就是从其中的main方法开始的,从代码中可以看到,这里对应用程序委托对象AppDeleget进行了初始化的操作;
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
InfoPlist.strings
工程本地化的字符串文件,存放代码中使用到的一些字符串;Prefix.pch
在这个文件中,可以存放一些不经常被修改的头文件,减少其他文件的重复引用,同时提高了程序的变异速度。
以上便是一个iOS工程所包含的大致目录机构,本文只是系统性的简述,针对每个文件的功能和用法将在后续文章中通过具体案例项目需求一一介绍,这样,便能对每个知识点理解的更加透彻,使用的更加得心应手。
学海无涯,一步一个脚印!