杰瑞科技汇

iPhone 4开发基础教程如何入门?

iPhone 4 和其配套的开发工具(如 Xcode 4 和 iOS 4)已经是历史产物。 苹果早已停止对这些旧系统的更新和支持,本教程的目的是帮助你理解移动应用开发的核心思想和基本流程,而不是为了开发能在现代设备上运行的商业级应用。

这份教程将带你重温那个时代的开发环境,并围绕 iOS 4 和 iPhone 4 的特性展开。


第一部分:开发环境准备 (复古体验)

要开发 iPhone 4 应用,你需要模拟当年的环境。

硬件与软件要求 (模拟环境)

你无法在最新的 macOS 上直接安装 Xcode 4,最简单的方法是使用虚拟机。

  • 操作系统: macOS 10.13 High Sierra (这是最后一个官方支持较老 Xcode 版本的 macOS)。
  • 虚拟机软件: UTM (免费) 或 VMware/Parallels。
  • Xcode 版本: Xcode 4.6.3 (这是最后一个支持 iOS 4.3 SDK 的版本,可以很好地适配 iPhone 4)。
  • iOS 模拟器: Xcode 自带的 iOS Simulator,可以模拟 iPhone 4、iPhone 4S 等设备。

安装步骤:

  1. 在你的现代 Mac 上安装虚拟机软件(推荐 UTM)。
  2. 在虚拟机中安装 macOS 10.13 High Sierra。
  3. 在虚拟机中,从 Apple Developer 归档页面下载并安装 Xcode 4.6.3

创建你的第一个项目:HelloWorld

  1. 打开 Xcode 4.6.3。
  2. 选择 "Create a new Xcode project"。
  3. 在左侧选择 "Application",然后选择 "View-based Application",点击 "Next"。
    • View-based Application 是 iOS 4 时代最基础的模板,它包含一个主视图和一个视图控制器。
  4. 填写产品名称(HelloWorld),选择 "iPhone" 作为设备,确保 "Use Storyboards" 和 "Use Automatic Reference Counting" 没有被勾选,这些都是 iOS 5 才引入的特性,点击 "Next" 并选择项目保存位置。

第二部分:iOS 4 开发核心概念

iOS 4 的开发范式与现在有很大不同,主要基于 MVC (Model-View-Controller) 模式和 Interface Builder (Xib 文件)。

MVC 模式

  • Model (模型): 你的数据,一个 Person 类,有 nameage 属性,它不关心界面。
  • View (视图): 用户看到和交互的界面元素,例如按钮、标签、图片,在 iPhone 4 时代,视图通常由 .xib 文件定义(Interface Builder 文件)。
  • Controller (控制器): 大脑,它连接 Model 和 View,它从 Model 获取数据,然后显示在 View 上,并处理用户在 View 上的操作。

关键文件结构

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

  • HelloWorldAppDelegate.h & .m: 应用的代理,负责应用的生命周期(启动、关闭等)。
  • HelloWorldViewController.h & .m: 主控制器,是我们编写逻辑的主要地方。
  • HelloViewController.xib: 界面文件,用于拖拽控件来设计界面。
  • main.m: 程序的入口点。

第三部分:实战演练 - 制作一个简单的计数器

我们将创建一个应用,有一个显示数字的标签,一个“增加”按钮和一个“减少”按钮。

步骤 1:设计界面

  1. 在 Xcode 中,双击 HelloViewController.xib 文件,会打开 Interface Builder。
  2. 从右下角的 "Object Library" (对象库) 中,拖拽以下控件到 "View Window" (视图窗口) 中:
    • Label (标签): 用于显示数字,选中它,在右侧的 "Attributes Inspector" (属性检查器) 中,将 "Text" 设置为 "0"。
    • Button (按钮): 用于增加数字,将其 "Title" (标题) 设置为 "增加"。
    • 再拖拽一个 Button,将其 "Title" 设置为 "减少"。
  3. 使用拖拽和蓝色辅助线,合理地排列这三个控件。

iPhone 4开发基础教程如何入门?-图1

步骤 2:连接界面与代码

我们需要将这些控件和代码中的变量关联起来。

  1. 打开 HelloViewController.h 文件,在 @interface@end 之间添加以下代码:

    #import <UIKit/UIKit.h>
    @interface HelloViewController : UIViewController {
        // 声明一个IBOutlet,用于连接界面上的标签
        IBOutlet UILabel *countLabel;
        // 声明一个NSInteger变量来存储计数
        NSInteger count;
    }
    // 声明一个IBAction,用于连接按钮的点击事件
    - (IBAction)increaseButtonTapped:(id)sender;
    - (IBAction)decreaseButtonTapped:(id)sender;
    @end
    • IBOutlet: 这是一个关键字,告诉 Interface Builder 这个属性可以被连接到界面控件。
    • IBAction: 这是一个关键字,告诉 Interface Builder 这个方法可以被连接到控件的事件(如按钮点击)。
  2. 回到 Interface Builder,进行连接:

    • 点击右上角的 "Editor" -> "Connections Inspector" (连接检查器)。
    • 选中 countLabel,然后点击右侧的圆圈,按住并拖拽到界面上的那个 "0" 标签上,松开鼠标,你会看到一条线连接起来。
    • 选中 increaseButtonTapped:,点击右侧的圆圈,按住并拖拽到界面上的 "增加" 按钮上,在弹出的菜单中选择 "Touch Up Inside"。
    • 同样地,为 decreaseButtonTapped: 和 "减少" 按钮建立连接。

步骤 3:编写逻辑代码

现在打开 HelloViewController.m 文件,在 @implementation@end 之间实现我们声明的方法。

#import "HelloViewController.h"
@implementation HelloViewController
// 当视图被加载到内存时调用,适合进行初始化操作
- (void)viewDidLoad {
    [super viewDidLoad];
    // 初始化计数器
    count = 0;
    // 更新标签显示
    [self updateCountLabel];
}
// 更新标签显示的辅助方法
- (void)updateCountLabel {
    // 将 NSInteger 转换为 NSString 并设置给标签
    countLabel.text = [NSString stringWithFormat:@"%ld", (long)count];
}
// "增加" 按钮被点击时调用
- (IBAction)increaseButtonTapped:(id)sender {
    count++;
    [self updateCountLabel];
}
// "减少" 按钮被点击时调用
- (IBAction)decreaseButtonTapped:(id)sender {
    count--;
    [self updateCountLabel];
}
@end

步骤 4:运行与调试

  1. 在 Xcode 顶部,确保目标设备是 "iPhone 4" 或 "iPhone 4S"。
  2. 点击运行按钮(一个三角形 ▶️)。
  3. iOS Simulator 将启动,并显示你的应用,点击按钮,你应该能看到数字在变化了!

第四部分:iPhone 4 的独有特性开发

如果你想让应用更贴合 iPhone 4,可以探索以下特性:

Retina 显示屏支持

iPhone 4 的革命性之一是其 Retina 屏幕,为了在高分辨率下显示清晰,你需要提供两倍大小的图片资源。

  1. 在 Xcode 中,右键点击项目 -> "New Group",命名为 Images.xcassets (虽然叫 xcassets,但在 Xcode 4 中我们只是用它来组织)。
  2. 准备两张图片,icon.png (57x57) 和 icon@2x.png (114x114)。
  3. 将它们拖入 Xcode 项目,确保在 "Add to targets" 时勾选了你的应用。
  4. 在代码中加载图片时,iOS 会自动选择合适的版本:
    UIImage *icon = [UIImage imageNamed:@"icon.png"];
    // 在 Retina 屏幕上,系统会自动加载 icon@2x.png

多任务处理

iOS 4 引入了多任务,但主要是有限的几种,你可以让你的应用在后台完成特定任务。

HelloWorldAppDelegate.mdidFinishLaunchingWithOptions 方法中,可以声明支持的后台任务类型:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    // 声明支持音频播放等多任务
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    return YES;
}

访问摄像头和照片库

iPhone 4 有出色的摄像头。

#import <MobileCoreServices/MobileCoreServices.h> // 需要导入此头文件
// 在某个按钮的点击事件中
- (IBAction)takePictureButtonTapped:(id)sender {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    // 设置可以拍照和录像
    picker.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie];
    [self presentViewController:picker animated:YES completion:nil];
}
// 当用户选择完图片后调用
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    // 现在你可以使用 selectedImage 了,例如显示在界面上
    [picker dismissViewControllerAnimated:YES completion:nil];
}
// 当用户取消选择时调用
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker dismissViewControllerAnimated:YES completion:nil];
}

第五部分:如何向前看?

学习 iPhone 4 开发的最大价值在于理解了 iOS 开发的基石,现代 iOS 开发已经发生了巨大变化:

  1. Swift 语言取代了 Objective-C: Swift 更现代、更安全、更易学。
  2. Storyboard 取代了 Nib 文件: Storyboard 可以可视化地管理多个屏幕之间的跳转和布局,比 Nib 更强大。
  3. 自动引用计数 是默认且强制性的: 不再需要手动管理 retain, release, autorelease
  4. 现代架构: 除了 MVC,还有 MVVM (Model-View-ViewModel)、MVP 等更清晰的架构模式。
  5. 新的 UI 框架: UIKit 依然是基础,但新增了 SwiftUI,一种声明式的 UI 框架,可以让你用更少的代码写出漂亮的界面。

给你的建议:

  • 打好基础: 理解 Objective-C 的内存管理、消息传递机制和 MVC 思维,对学习 Swift 和现代架构非常有帮助。
  • 拥抱现代: 在掌握了基础后,强烈建议你切换到最新的 Xcode,学习 SwiftSwiftUI,这才是 iOS 开发的未来。
  • 关注社区: 国内有很多优秀的 Swift 和 iOS 开发者社区,如 SwiftGG、掘客等,可以获取最新的学习资源。

希望这份复古教程能让你顺利开启 iPhone 4 的开发之旅,并为你学习现代 iOS 开发打下坚实的基础!

分享:
扫描分享到社交APP
上一篇
下一篇