开源 Objective-C IOS 应用开发(四)Xcode工程文件结构

文章的目的为了记录使用Objective-C 进行IOS app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

相关链接:

开源 Objective-C IOS 应用开发(一)macOS 的使用

开源 Objective-C IOS 应用开发(二)Xcode安装

开源 Objective-C IOS 应用开发(三)第一个iPhone的APP

开源 Objective-C IOS 应用开发(四)Xcode工程文件结构

开源 Objective-C IOS 应用开发(五)iOS操作(action)和输出口(Outlet)

推荐链接:

开源 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" 来查看生成的应用包。

二、启动和数据流

启动流程:

  1. 程序入口 :系统从 main.m 开始执行。

  2. 创建应用核心 :main.m 中的 UIApplicationMain 函数会创建 UIApplication 单例对象,并实例化 AppDelegate。

  3. 初始化 :应用代理的 application:didFinishLaunchingWithOptions: 方法被调用。

  4. 加载主界面 :系统读取 Info.plist,找到 Main storyboard file base name 的配置(例如 Main)。

  5. 实例化初始控制器 :系统加载 Main.storyboard,并创建其中指定的初始 ViewController 的实例。

  6. 显示界面 :将 ViewController 的视图显示在屏幕上。

  7. 用户交互 :之后,用户与屏幕的交互会由 ViewController 中的 IBAction 方法来响应。

三、通常的用法

开发时的通常做法:

  1. 在 Main.storyboard 中拖拽控件,设计界面。

  2. 在 ViewController.h 中,通过 "Ctrl+拖拽" 的方式创建 IBOutlet(属性)和 IBAction(方法)。

  3. 在 ViewController.m 中实现 IBAction 方法的逻辑代码。

  4. 将图片资源拖入 Assets.xcassets 中,然后在 Storyboard 或代码里使用。

  5. 在 Info.plist 中修改应用名称、版本号等配置。

文件功能的总结:

  • AppDelegate:管理应用级的事件和状态。

  • ViewController:管理单个屏幕的界面和逻辑。

  • Main.storyboard:可视化地设计界面。

  • Assets.xcassets:集中管理图片资源。

  • Info.plist:配置应用的元数据和系统设置。

相关推荐
传奇开心果编程9 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
时早玖沐11 小时前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
SL_staff11 小时前
制造业订单交付总踩坑?用结构化节点协同模型重构计划系统
java·开源·全栈
不悔哥12 小时前
开源 CrewTrack:ESP32 加 RFID,自己组一台刷卡考勤机
开源
SL_staff13 小时前
APS动态重排实践:在多品种小批量场景下实现5分钟插单响应
java·开源·产品
瓦瓦gogo13 小时前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
分布式存储与RustFS15 小时前
模型权重散落在每台 GPU?用 RustFS 给 vLLM 做共享权重库
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
Ikalus198815 小时前
Netty 同一个洞,90 天后换了编号又回来 —— 官方公告自己写着「上次修得不完整」
开源
2501_9462447815 小时前
开源鸿蒙平台 CMP 三方库「compose-continuous-rounded-corner-shape」适配全流程
华为·开源·harmonyos
wflynn15 小时前
GitHub 日榜趋势速报 | 2026-10-29
开源·github