开源 Objective-C IOS 应用开发(四)Xcode工程文件结构
文章的目的为了记录使用Objective-C 进行IOS app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。
推荐链接:
开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客
开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客
开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客
开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客
开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客
开源 Arkts 鸿蒙应用 开发(六)数据持久--文件和首选项存储-CSDN博客
开源 Arkts 鸿蒙应用 开发(七)数据持久--sqlite关系数据库-CSDN博客
开源 Arkts 鸿蒙应用 开发(八)多媒体--相册和相机-CSDN博客
开源 Arkts 鸿蒙应用 开发(九)通讯--tcp客户端-CSDN博客
开源 Arkts 鸿蒙应用 开发(十)通讯--Http-CSDN博客
开源 Arkts 鸿蒙应用 开发(十一)证书和包名修改-CSDN博客
开源 Arkts 鸿蒙应用 开发(十二)传感器的使用-CSDN博客
开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放_arkts avplayer播放音频 mp3-CSDN博客
开源 Arkts 鸿蒙应用 开发(十四)线程--任务池(taskpool)-CSDN博客
开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘-CSDN博客
开源 Arkts 鸿蒙应用 开发(十六)自定义绘图控件--波形图-CSDN博客
开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载-CSDN博客
开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器-CSDN博客
推荐链接:
开源 java android app 开发(一)开发环境的搭建-CSDN博客
开源 java android app 开发(二)工程文件结构-CSDN博客
开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客
开源 java android app 开发(四)GUI界面重要组件-CSDN博客
开源 java android app 开发(五)文件和数据库存储-CSDN博客
开源 java android app 开发(六)多媒体使用-CSDN博客
开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客
开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客
开源 java android app 开发(九)后台之线程和服务-CSDN博客
开源 java android app 开发(十)广播机制-CSDN博客
开源 java android app 开发(十一)调试、发布-CSDN博客
开源 java android app 开发(十二)封库.aar-CSDN博客
本章内容主要为Xcode 默认的工程文件结构,基于Storyboard模式,Objective-C语言开发的工程。
目录:
1.项目文件结构
2.启动和数据流
3.通常的用法
一、项目文件结构
新建项目后的工程文件

你的工程名 (YourProjectName)
这是最顶级的组,包含了整个项目的源代码和资源。
-
AppDelegate.h和AppDelegate.m-
功能:这是整个应用的核心管理者和“总指挥”。它负责监听和应用生命周期相关的关键事件。
-
AppDelegate.h:头文件,声明了AppDelegate类及其需要对外暴露的方法和属性。 -
AppDelegate.m:实现文件,包含了这些方法的具体代码。你会在这里看到诸如:-
application:didFinishLaunchingWithOptions::应用启动后第一个调用的方法,在这里进行初始化设置。 -
applicationWillResignActive::应用将要进入非活动状态(比如有电话打入)。 -
applicationDidEnterBackground::应用已经进入后台。 -
applicationWillEnterForeground::应用将要进入前台。 -
applicationDidBecomeActive::应用已经变为活动状态(开始与用户交互)。
-
-
-
ViewController.h和ViewController.m-
功能:这是单个界面的控制器。它负责管理你在 Storyboard 中看到的那个视图(View),处理用户的交互(如按钮点击、屏幕触摸)和界面的逻辑。
-
ViewController.h:头文件,声明了与界面元素(如 UILabel, UIButton)关联的 IBOutlet 属性,以及响应事件的 IBAction 方法。 -
ViewController.m:实现文件,你在这里编写控制视图和响应事件的具体代码。它是UIViewController的子类。
-
-
Main.storyboard-
功能:这是应用的可视化界面设计文件。你通过拖拽控件(按钮、标签、文本框等)来设计用户界面,而不是纯手写代码。它描述了应用有哪些界面,以及界面之间的跳转关系。
-
在这个模板中,它包含了一个
ViewController场景,并通过一个箭头指向它,表示这是应用的初始界面。
-
-
Assets.xcassets-
功能:这是应用的图片、图标、颜色等资源的管理库。你将项目中用到的所有图像都放在这里,Xcode 会自动为不同分辨率的设备(如 @2x, @3x)进行管理。
-
你也会在这里设置应用的图标
AppIcon。
-
-
LaunchScreen.storyboard-
功能:这是应用的启动图界面。在应用启动但还未完全准备好与用户交互时,系统会显示这个界面。它通常是一个与首个界面相似的静态页面,用于提升用户体验。注意:不要在这里写复杂的逻辑。
-
-
main.m-
功能:这是整个 Objective-C 程序的入口点。它非常简短,主要工作是调用
UIApplicationMain函数,这个函数会创建应用程序对象和应用程序代理(AppDelegate),并启动整个事件循环。你通常永远不需要修改这个文件。
-
-
Info.plist-
功能:这是应用的“身份证”和“配置清单”。它是一个属性列表文件,包含了应用的元信息,例如:
-
应用的显示名称(Bundle display name)
-
版本号(Bundle version)
-
主 Storyboard 文件的名称(Main storyboard file base name)
-
支持的设备方向等。
-
-
Products
-
YourProjectName.app-
功能:这代表编译后生成的可执行文件。它通常显示为红色,因为在编译之前这个文件还不存在。编译成功后,Xcode 会找到这个
.app文件的位置,你可以右键选择 “Show in Finder” 来查看生成的应用包。
-
二、启动和数据流

启动流程:
-
程序入口:系统从
main.m开始执行。 -
创建应用核心:
main.m中的UIApplicationMain函数会创建UIApplication单例对象,并实例化AppDelegate。 -
初始化:应用代理的
application:didFinishLaunchingWithOptions:方法被调用。 -
加载主界面:系统读取
Info.plist,找到Main storyboard file base name的配置(例如Main)。 -
实例化初始控制器:系统加载
Main.storyboard,并创建其中指定的初始ViewController的实例。 -
显示界面:将
ViewController的视图显示在屏幕上。 -
用户交互:之后,用户与屏幕的交互会由
ViewController中的IBAction方法来响应。
三、通常的用法
开发时的通常做法:
-
在
Main.storyboard中拖拽控件,设计界面。 -
在
ViewController.h中,通过 “Ctrl+拖拽” 的方式创建IBOutlet(属性)和IBAction(方法)。 -
在
ViewController.m中实现IBAction方法的逻辑代码。 -
将图片资源拖入
Assets.xcassets中,然后在 Storyboard 或代码里使用。 -
在
Info.plist中修改应用名称、版本号等配置。
文件功能的总结:
-
AppDelegate:管理应用级的事件和状态。 -
ViewController:管理单个屏幕的界面和逻辑。 -
Main.storyboard:可视化地设计界面。 -
Assets.xcassets:集中管理图片资源。 -
Info.plist:配置应用的元数据和系统设置。
