iOS 7 开发基础教程

第一部分:准备工作

为什么学习 iOS 7?

  • 理解历史: iOS 7 是一次颠覆性的设计变革,引入了扁平化设计、动态效果和全新的交互范式,了解它有助于你理解 Apple 设计语言的演变。
  • 基础牢固: iOS 7 使用的 UIKitFoundationMVC 等核心框架,与现代 iOS 开发(如 iOS 15/16)的底层逻辑基本一致,学好它,学习新版本会非常快。
  • 兼容旧项目: 在维护一些较老的项目时,你可能会遇到基于 iOS 7 的代码。

必备工具

  1. 一台 Mac 电脑: 这是硬性要求,因为 Xcode 只在 macOS 上运行。
  2. Xcode: Apple 的官方集成开发环境,你需要安装一个能支持 iOS 7 SDK 的 Xcode 版本。
    • 推荐版本: Xcode 5Xcode 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!"

创建新项目

  1. 打开 Xcode (以 Xcode 5 为例)。
  2. 选择 "Create a new Xcode project"。
  3. 在模板选择窗口,选择 Application -> Single View Application,然后点击 "Next"。
  4. 填写项目信息:
    • Product Name: HelloWorld (或你喜欢的名字)
    • Company Identifier: 可以填写 com.yourname
    • Class Prefix: HL (可选,用于区分你的类名)
    • Devices: 选择 iPhone
    • 确保下拉菜单中的 "Language"Objective-C"Use Storyboards"YES"Use Automatic Reference Counting"YES
  5. 选择项目保存位置,点击 "Create"。

理解项目结构

创建后,你会看到以下关键文件:

ios7开发基础教程
(图片来源网络,侵删)
  • HelloWorld/: 你的主项目文件夹。
    • AppDelegate.h & AppDelegate.m: 应用程序代理,负责处理应用的生命周期(启动、进入后台、关闭等)。
    • ViewController.h & ViewController.m: 视图控制器,管理屏幕上的内容。
    • Main.storyboard: 一个可视化界面设计文件,用于构建用户界面,iOS 7 引入了 Storyboard,用它来替代旧的 XIB 文件,可以更方便地管理多个屏幕。
    • Assets.xcassets: 存放图片、图标等资源。
    • Info.plist: 应用的配置清单文件。

Storyboard 与视图控制器

  1. 打开 Main.storyboard,你会看到一个空白的窗口,这代表你的应用启动后显示的第一个屏幕。
  2. 从右侧的 Object Library (对象库,可以点击右下角的 "+" 图标打开) 中,找到 Label (标签) 控件,将其拖拽到屏幕中央。
  3. 选中这个 Label,在右侧的 Attributes Inspector (属性检查器) 中,将其 "Text" 属性修改为 Hello, iOS 7!

运行应用

  1. 连接你的 iPhone 或选择 iOS 7 模拟器 (在 Xcode 顶部工具栏的 Scheme 选择器中)。
  2. 点击运行按钮(一个三角形 ▶️)。

几秒钟后,模拟器会启动,并显示一个包含 "Hello, iOS 7!" 文字的白色屏幕,恭喜!你的第一个 iOS 应用运行成功了!


第三部分:核心概念详解

MVC (Model-View-Controller) 模式

这是 iOS 开发的基石,Xcode 的模板就是基于这个模式构建的。

  • Model (模型): 数据和业务逻辑,它不关心界面如何显示,只负责数据的存储和管理,一个 User 类,包含 nameage 属性。
  • View (视图): 用户界面,你拖拽的 LabelButton 等都是 View,它们负责展示数据,并响应用户的触摸事件。
  • Controller (控制器): 大脑,它连接 Model 和 View。
    • 从 Model 获取数据。
    • 将数据传递给 View 进行显示。
    • 捕获 View 上的用户操作(如点击按钮),并决定下一步做什么(比如更新 Model 或切换到另一个 View)。

在你的 HelloWorld 项目中:

  • Model: 目前还没有,我们只有一个简单的字符串。
  • View: Main.storyboard 中的 Label
  • Controller: ViewController.hViewController.m 文件。

IBOutlet & IBAction

这是连接 Controller 和 View 的桥梁。

ios7开发基础教程
(图片来源网络,侵删)
  • IBOutlet (Interface Builder Outlet): 一个属性,用来指向 Storyboard 上的某个 UI 控件(如 Label),这样你就可以在代码中访问和修改这个控件。
  • IBAction (Interface Builder Action): 一个方法,用来响应 Storyboard 上某个 UI 控件的事件(如按钮的点击事件)。

动手实践:

  1. 打开 ViewController.h 文件。

  2. @interface@end 之间添加以下代码:

    @property (weak, nonatomic) IBOutlet UILabel *myLabel;
    • @property: 声明一个属性。
    • weak: 弱引用,防止循环引用导致的内存泄漏,View 持有 Controller 的强引用,Controller 也持有 View 的强引用,谁也无法被释放。
    • nonatomic: 非原子性,性能更高。
    • IBOutlet: 告诉 Xcode,这是一个可以连接到 Storyboard 的属性。
    • UILabel: 属性的类型。
    • myLabel: 属性的名称。
  3. 打开 Main.storyboard,按住 Control 键,从 ViewController 图标(黄色的箭头)拖拽到屏幕上的 Label,松开鼠标,在弹出的菜单中选择 myLabel,这就建立了连接!

  4. 当你点击按钮时,我们想改变 myLabel 的文字,从 Object Library 中拖一个 Button 到屏幕上,并修改其标题为 "Change Text"。

  5. 打开 ViewController.h,在 @interface@end 之间添加一个方法声明:

    - (IBAction)changeTextButtonTapped:(id)sender;
    • - (IBAction): 告诉 Xcode,这是一个可以连接到控件事件的方法。
    • changeTextButtonTapped:: 方法名。
    • (id)sender: 发送事件的对象,这里是按钮本身。
  6. 打开 ViewController.m,在 @implementation@end 之间添加方法实现:

    - (IBAction)changeTextButtonTapped:(id)sender {
        self.myLabel.text = @"Text has been changed!";
    }
  7. 回到 Main.storyboard,按住 Control 键,从按钮拖拽到 ViewController 图标,在弹出的菜单中选择 changeTextButtonTapped:

  8. 再次运行应用,点击按钮,你会发现文字改变了!


第四部分:深入探索

导航与视图切换

大多数应用都有多个屏幕,iOS 7 中最常用的方式是 UINavigationController

动手实践:创建第二个屏幕

  1. 在 Xcode 中,选择 File -> New -> File...

  2. 选择 Cocoa Touch -> Objective-C class,点击 "Next"。

  3. 填写信息:

    • Class: SecondViewController
    • Subclass of: UIViewController
    • 确保 "With XIB for user interface" 是 NO (因为我们用 Storyboard)。
  4. 点击 "Create"。

  5. 打开 Main.storyboard,从 Object Library 中拖拽一个 View Controller 到画布上。

  6. 选中这个新的 View Controller,在菜单栏选择 Editor -> Embed In -> Navigation Controller,你会看到它被一个导航栏包裹,并且出现了根控制器。

  7. 选中根控制器(第一个 View Controller),在菜单栏选择 Editor -> Embed In -> Navigation Controller,现在你有两个导航控制器了,这不对,我们只需要一个。删除其中一个导航控制器,确保第二个 View Controller 被嵌入到第一个导航控制器中,最终结构应该是:Navigation Controller -> View Controller (Root) -> View Controller (Second)

  8. 从第一个 View Controller 的图标拖一条线到第二个 View Controller,选择 "modal""push",选择 "show" (在 iOS 7 中,这通常等同于 push)。

  9. 在第一个 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
  10. 运行应用,点击按钮,你就会看到平滑的页面切换动画,并且顶部出现了导航栏。

数据传递

如何从第一个页面传递数据到第二个页面?

  1. SecondViewController.h 中添加一个属性来接收数据:

    @property (nonatomic, copy) NSString *passedText;
  2. SecondViewController.mviewDidLoad 方法中,将这个数据显示在 Label 上(假设你已经拖了一个 Label 并连接为 @IBOutlet):

    // SecondViewController.m
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.mySecondLabel.text = self.passedText;
    }
  3. 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 设计模式 的核心思想。
  • IBOutletIBAction 的连接。
  • UINavigationController 的基本用法和视图切换。
  • 简单的数据传递

下一步可以学习:

  1. 数据持久化: 如何将数据保存到本地(UserDefaults, NSCoding, Core Data)。
  2. 网络请求: 如何从服务器获取数据(NSURLConnectionNSURLSession)。
  3. 表格视图: UITableView,这是 iOS 中最重要的控件,用于展示列表数据。
  4. 自定义控件: 继承自 UIView 创建自己的 UI 组件。
  5. 多线程: GCD (Grand Central Dispatch),避免在主线程上进行耗时操作,防止界面卡顿。

虽然 iOS 7 已经过时,但它的这些基础知识点是永恒的,掌握了它们,你将有能力去学习任何现代的 iOS 开发技术,祝你学习愉快!