iOS 7 开发基础教程
第一部分:准备工作
为什么学习 iOS 7?
- 理解历史: iOS 7 是一次颠覆性的设计变革,引入了扁平化设计、动态效果和全新的交互范式,了解它有助于你理解 Apple 设计语言的演变。
- 基础牢固: iOS 7 使用的
UIKit、Foundation、MVC等核心框架,与现代 iOS 开发(如 iOS 15/16)的底层逻辑基本一致,学好它,学习新版本会非常快。 - 兼容旧项目: 在维护一些较老的项目时,你可能会遇到基于 iOS 7 的代码。
必备工具
- 一台 Mac 电脑: 这是硬性要求,因为 Xcode 只在 macOS 上运行。
- Xcode: Apple 的官方集成开发环境,你需要安装一个能支持 iOS 7 SDK 的 Xcode 版本。
- 推荐版本: Xcode 5 或 Xcode 6,Xcode 5 是为 iOS 7 量身定做的,而 Xcode 6 在支持 iOS 8 的同时,也能很好地兼容 iOS 7。
- 如何获取: 你可以在 Apple Developer Archives 找到旧版本的 Xcode,请确保下载
.dmg文件并按照指引安装。
开发语言
- Objective-C: 这是 iOS 7 开发的主流语言,它是一种 C 语言的超集,增加了面向对象的特性,本教程将主要使用 Objective-C。
- Swift: Apple 在 2025 年 WWDC 上推出的新语言,从 iOS 8 开始成为主要语言,虽然 iOS 7 项目不使用 Swift,但如果你有 Swift 基础,学习 Objective-C 会更容易理解其底层概念。
第二部分:第一个应用 - "Hello, World!"
创建新项目
- 打开 Xcode (以 Xcode 5 为例)。
- 选择 "Create a new Xcode project"。
- 在模板选择窗口,选择 Application -> Single View Application,然后点击 "Next"。
- 填写项目信息:
- Product Name:
HelloWorld(或你喜欢的名字) - Company Identifier: 可以填写
com.yourname - Class Prefix:
HL(可选,用于区分你的类名) - Devices: 选择
iPhone - 确保下拉菜单中的 "Language" 是 Objective-C,"Use Storyboards" 是 YES,"Use Automatic Reference Counting" 是 YES。
- Product Name:
- 选择项目保存位置,点击 "Create"。
理解项目结构
创建后,你会看到以下关键文件:

HelloWorld/: 你的主项目文件夹。AppDelegate.h&AppDelegate.m: 应用程序代理,负责处理应用的生命周期(启动、进入后台、关闭等)。ViewController.h&ViewController.m: 视图控制器,管理屏幕上的内容。Main.storyboard: 一个可视化界面设计文件,用于构建用户界面,iOS 7 引入了 Storyboard,用它来替代旧的 XIB 文件,可以更方便地管理多个屏幕。Assets.xcassets: 存放图片、图标等资源。Info.plist: 应用的配置清单文件。
Storyboard 与视图控制器
- 打开
Main.storyboard,你会看到一个空白的窗口,这代表你的应用启动后显示的第一个屏幕。 - 从右侧的 Object Library (对象库,可以点击右下角的 "+" 图标打开) 中,找到 Label (标签) 控件,将其拖拽到屏幕中央。
- 选中这个 Label,在右侧的 Attributes Inspector (属性检查器) 中,将其 "Text" 属性修改为
Hello, iOS 7!。
运行应用
- 连接你的 iPhone 或选择 iOS 7 模拟器 (在 Xcode 顶部工具栏的 Scheme 选择器中)。
- 点击运行按钮(一个三角形 ▶️)。
几秒钟后,模拟器会启动,并显示一个包含 "Hello, iOS 7!" 文字的白色屏幕,恭喜!你的第一个 iOS 应用运行成功了!
第三部分:核心概念详解
MVC (Model-View-Controller) 模式
这是 iOS 开发的基石,Xcode 的模板就是基于这个模式构建的。
- Model (模型): 数据和业务逻辑,它不关心界面如何显示,只负责数据的存储和管理,一个
User类,包含name和age属性。 - View (视图): 用户界面,你拖拽的
Label、Button等都是 View,它们负责展示数据,并响应用户的触摸事件。 - Controller (控制器): 大脑,它连接 Model 和 View。
- 从 Model 获取数据。
- 将数据传递给 View 进行显示。
- 捕获 View 上的用户操作(如点击按钮),并决定下一步做什么(比如更新 Model 或切换到另一个 View)。
在你的 HelloWorld 项目中:
- Model: 目前还没有,我们只有一个简单的字符串。
- View:
Main.storyboard中的Label。 - Controller:
ViewController.h和ViewController.m文件。
IBOutlet & IBAction
这是连接 Controller 和 View 的桥梁。

- IBOutlet (Interface Builder Outlet): 一个属性,用来指向 Storyboard 上的某个 UI 控件(如 Label),这样你就可以在代码中访问和修改这个控件。
- IBAction (Interface Builder Action): 一个方法,用来响应 Storyboard 上某个 UI 控件的事件(如按钮的点击事件)。
动手实践:
-
打开
ViewController.h文件。 -
在
@interface和@end之间添加以下代码:@property (weak, nonatomic) IBOutlet UILabel *myLabel;
@property: 声明一个属性。weak: 弱引用,防止循环引用导致的内存泄漏,View 持有 Controller 的强引用,Controller 也持有 View 的强引用,谁也无法被释放。nonatomic: 非原子性,性能更高。IBOutlet: 告诉 Xcode,这是一个可以连接到 Storyboard 的属性。UILabel: 属性的类型。myLabel: 属性的名称。
-
打开
Main.storyboard,按住Control键,从ViewController图标(黄色的箭头)拖拽到屏幕上的Label,松开鼠标,在弹出的菜单中选择myLabel,这就建立了连接! -
当你点击按钮时,我们想改变
myLabel的文字,从 Object Library 中拖一个 Button 到屏幕上,并修改其标题为 "Change Text"。 -
打开
ViewController.h,在@interface和@end之间添加一个方法声明:- (IBAction)changeTextButtonTapped:(id)sender;
- (IBAction): 告诉 Xcode,这是一个可以连接到控件事件的方法。changeTextButtonTapped:: 方法名。(id)sender: 发送事件的对象,这里是按钮本身。
-
打开
ViewController.m,在@implementation和@end之间添加方法实现:- (IBAction)changeTextButtonTapped:(id)sender { self.myLabel.text = @"Text has been changed!"; } -
回到
Main.storyboard,按住Control键,从按钮拖拽到ViewController图标,在弹出的菜单中选择changeTextButtonTapped:。 -
再次运行应用,点击按钮,你会发现文字改变了!
第四部分:深入探索
导航与视图切换
大多数应用都有多个屏幕,iOS 7 中最常用的方式是 UINavigationController。
动手实践:创建第二个屏幕
-
在 Xcode 中,选择
File -> New -> File...。 -
选择 Cocoa Touch -> Objective-C class,点击 "Next"。
-
填写信息:
- Class:
SecondViewController - Subclass of:
UIViewController - 确保 "With XIB for user interface" 是 NO (因为我们用 Storyboard)。
- Class:
-
点击 "Create"。
-
打开
Main.storyboard,从 Object Library 中拖拽一个 View Controller 到画布上。 -
选中这个新的 View Controller,在菜单栏选择 Editor -> Embed In -> Navigation Controller,你会看到它被一个导航栏包裹,并且出现了根控制器。
-
选中根控制器(第一个 View Controller),在菜单栏选择 Editor -> Embed In -> Navigation Controller,现在你有两个导航控制器了,这不对,我们只需要一个。删除其中一个导航控制器,确保第二个 View Controller 被嵌入到第一个导航控制器中,最终结构应该是:
Navigation Controller->View Controller (Root)->View Controller (Second)。 -
从第一个 View Controller 的图标拖一条线到第二个 View Controller,选择 "modal" 或 "push",选择 "show" (在 iOS 7 中,这通常等同于 push)。
-
在第一个 View Controller (
ViewController.h) 中,为按钮创建一个 IBAction,当点击时执行切换操作:// ViewController.m - (IBAction)showSecondView:(id)sender { // 获取 Storyboard UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; // 实例化第二个视图控制器 SecondViewController *secondVC = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"]; // 获取导航控制器并压入新的视图控制器 [self.navigationController pushViewController:secondVC animated:YES]; }- 重要: 你需要在 Storyboard 中为第二个 View Controller 设置一个 Storyboard ID,选中它,在右侧 Identity Inspector 中,将 "Storyboard ID" 设置为
SecondViewController。
- 重要: 你需要在 Storyboard 中为第二个 View Controller 设置一个 Storyboard ID,选中它,在右侧 Identity Inspector 中,将 "Storyboard ID" 设置为
-
运行应用,点击按钮,你就会看到平滑的页面切换动画,并且顶部出现了导航栏。
数据传递
如何从第一个页面传递数据到第二个页面?
-
在
SecondViewController.h中添加一个属性来接收数据:@property (nonatomic, copy) NSString *passedText;
-
在
SecondViewController.m的viewDidLoad方法中,将这个数据显示在 Label 上(假设你已经拖了一个 Label 并连接为@IBOutlet):// SecondViewController.m - (void)viewDidLoad { [super viewDidLoad]; self.mySecondLabel.text = self.passedText; } -
在
ViewController.m中调用showSecondView方法时,设置数据:// ViewController.m - (IBAction)showSecondView:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; SecondViewController *secondVC = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"]; // 传递数据 secondVC.passedText = @"Hello from the first view!"; [self.navigationController pushViewController:secondVC animated:YES]; }
第五部分:总结与下一步
你已经掌握了 iOS 7 开发的基础,包括:
- 环境搭建 和项目创建。
- Storyboard 的基本使用。
- MVC 设计模式 的核心思想。
- IBOutlet 和 IBAction 的连接。
- UINavigationController 的基本用法和视图切换。
- 简单的数据传递。
下一步可以学习:
- 数据持久化: 如何将数据保存到本地(
UserDefaults,NSCoding,Core Data)。 - 网络请求: 如何从服务器获取数据(
NSURLConnection或NSURLSession)。 - 表格视图:
UITableView,这是 iOS 中最重要的控件,用于展示列表数据。 - 自定义控件: 继承自
UIView创建自己的 UI 组件。 - 多线程:
GCD(Grand Central Dispatch),避免在主线程上进行耗时操作,防止界面卡顿。
虽然 iOS 7 已经过时,但它的这些基础知识点是永恒的,掌握了它们,你将有能力去学习任何现代的 iOS 开发技术,祝你学习愉快!
