iOS:什么是iOS、系统架构和Swift语言

作者: IT Sectr 发布日期: 2026-02-07 阅读时间: 10 分钟

iOS — Apple的移动操作系统,为iPhone和iPod touch提供支持。iOS开发使用Swift语言在Xcode环境中进行。我们将分析平台架构、关键框架以及在App Store发布的过程。

要点

  • iOS — 具有XNU内核、Darwin内核层和Cocoa Touch用户层的单体操作系统
  • Swift — 主要开发语言,具有ARC自动内存管理和面向协议编程
  • UIKit和SwiftUI — 用于构建界面的两个框架:命令式和声明式
  • App Store — 唯一官方分发渠道,需要强制审核
  • App Sandbox — 安全模型,将每个应用程序隔离在单独的容器中

什么是iOS?

iOS — Apple的移动操作系统,于2007年与第一代iPhone一同首次发布。该系统构建于XNU微内核之上,这是一个结合了Mach和FreeBSD组件的混合内核。与Android不同,iOS是一个封闭平台:应用程序只能通过App Store安装,系统源代码不可用。

Apple同时控制硬件和软件,确保了高水平的优化。根据StatCounter(2026)的数据,iOS在移动操作系统市场的全球份额约为28%,在美国和日本超过50%。

系统使用沙盒(App Sandbox)模式——每个应用程序在隔离的环境中运行,未经用户通过系统对话框的明确许可,无法访问其他应用程序的数据。

iOS版本历史

第一个版本iPhone OS 1.0不支持第三方应用程序。App Store在2008年的iOS 2.0中出现。关键里程碑:iOS 4(多任务处理)、iOS 7(扁平化设计)、iOS 10(iMessage Apps)、iOS 14(桌面小部件)、iOS 17(StandBy模式)。每个主要版本都带来新的API和框架。

iOS版本年份关键创新
iPhone OS 12007第一个版本,无App Store
iOS 22008App Store,第三方应用
iOS 42010多任务处理,FaceTime
iOS 72013界面完全重新设计
iOS 102016iMessage Apps,SiriKit
iOS 142020小部件,App Library,画中画
iOS 172023StandBy,NameDrop,Live Voicemail

iOS架构:系统的四个层级

iOS架构由四个抽象层组成,每一层都为上层提供API。下层是内核和系统服务,上层是用户框架。

Cocoa Touch — 顶层

Cocoa Touch — 用于构建用户界面的框架层。包含UIKit、SwiftUI、Foundation、MapKit、NotificationCenter以及开发者直接使用的其他API。UIKit提供UIViewController、UIView、UIWindow和所有可视化组件。

Media — 图形和音频

Media层包括Core Graphics、Core Animation、Core Image、AVFoundation和Metal。Metal — 用于GPU的低级API,为游戏和增强现实应用程序提供高性能图形。Core Animation在具有硬件加速的层级别管理动画。

Core Services — 系统服务

Core Services包括Core Data、CloudKit、Core Location、HealthKit、Core Motion和Network。CFNetwork — 用于网络协议的低级C接口。Foundation — 围绕Core Foundation的面向对象封装,提供NSString、NSArray、NSDictionary类。

Core OS — 内核和安全性

底层包括XNU内核、APFS文件系统、加密模块(CommonCrypto、Security.framework)、电源管理和设备驱动程序。在这一层运行Secure Enclave — 用于存储生物识别数据和加密密钥的协处理器。

objective-c
// 通过Security框架检查Secure Enclave完整性
#import <LocalAuthentication/LocalAuthentication.h>

LAContext *context = [[LAContext alloc] init];
NSError *error = nil;

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                          error:&error]) {
    NSLog(@"Secure Enclave可用于生物识别");
} else {
    NSLog(@"Secure Enclave不可用:%@", error.localizedDescription);
}

Swift — iOS开发的主要语言

Swift — Apple于2014年推出的编程语言,用于替代Objective-C。由Chris Lattner在Apple开发。Swift结合了现代语言(Rust、Kotlin、C#)的语法和C级别的性能。根据TIOBE(2026)的数据,Swift位列前15种编程语言。

Swift的关键功能

Swift使用Automatic Reference Counting(ARC) — 自动引用计数,无需垃圾回收器即可管理内存。面向协议编程(POP)允许通过protocol extension扩展类型。Optionals提供类型安全的nil处理,模式匹配简化了分支处理。

swift
import UIKit

/// 数据加载服务的协议
protocol DataServiceProtocol {
    associatedtype T
    func fetch(completion: @escaping (Result<[T], Error>) -> Void)
}

/// 用于加载用户的服务实现
final class UserService: DataServiceProtocol {
    typealias T = User

    private let session: URLSession
    private let decoder: JSONDecoder

    init(session: URLSession = .shared, decoder: JSONDecoder = JSONDecoder()) {
        self.session = session
        self.decoder = decoder
    }

    func fetch(completion: @escaping (Result<[User], Error>) -> Void) {
        guard let url = URL(string: "https://api.example.com/users") else {
            completion(.failure(URLError(.badURL)))
            return
        }

        session.dataTask(with: url) { [weak self] data, response, error in
            guard let self, let data = data else {
                completion(.failure(error ?? URLError(.badServerResponse)))
                return
            }
            do {
                let users = try self.decoder.decode([User].self, from: data)
                completion(.success(users))
            } catch {
                completion(.failure(error))
            }
        }.resume()
    }
}

struct User: Codable, Identifiable {
    let id: Int
    let name: String
    let email: String
}

该示例展示了使用Swift Concurrency(async/await)、具有associatedtype的协议和Codable进行JSON解码的数据加载服务实现。ARC自动管理内存,weak self防止闭包中的强引用循环。

Swift Concurrency:async/await和Actors

从iOS 13开始,Swift通过async/await和Actors支持内置异步——保护状态免受数据竞争的线程安全类型。用于多线程的DispatchQueue正逐渐被async/await和Task结构所取代。

swift
actor UserRepository {
    private var cache: [Int: User] = [:]
    private let service = UserService()

    func getUser(id: Int) async throws -> User {
        if let cached = cache[id] {
            return cached
        }
        let users = try await service.fetchAsync()
        guard let user = users.first(where: { $0.id == id }) else {
            throw UserError.notFound
        }
        cache[id] = user
        return user
    }
}

UserRepositoryactor确保对缓存的访问在单个线程中进行,消除了竞争条件。编译器在构建阶段检查隔离性——对actor的可变属性的访问只能通过await进行。

Xcode和开发者工具

Xcode — Apple的集成开发环境(IDE),仅在macOS上可用。包括代码编辑器、用于可视化设计的Interface Builder、设备模拟器、用于性能分析的Instruments和LLDB调试器。Xcode 15支持带有宏的Swift 5.9。

Interface Builder和Storyboards

Interface Builder允许通过拖放创建界面,自动生成XML描述(XIB/Storyboard)。Storyboards描述屏幕流程。自2023年起,Apple推荐SwiftUI Preview作为可视化开发的主要工具,尽管Interface Builder仍然保留在UIKit项目中。

调试和性能分析工具

Xcode Instruments包含数十个模板:Time Profiler(CPU分析)、Allocations(内存)、Leaks(泄漏)、Core Animation(FPS)、Network和Energy Log。Metal Debugger允许检查GPU调用和着色器。LLDB — 支持Swift表达式和条件断点的控制台调试器。

iOS开发的主要框架

iOS SDK包含数百个框架。以下是每个iOS开发者日常使用的主要框架。

框架用途
UIKit界面:UIView、UIViewController、动画、手势
SwiftUI具有响应式更新的声明式界面
Foundation基本类型:String、Data、URLSession、JSONEncoder
Core Data在SQLite中本地存储数据的ORM
CloudKit与iCloud同步,无需后端的服务器逻辑
Core Location地理位置:GPS、地理围栏、iBeacon
MapKit显示Apple地图、标注、路线
AVFoundation音频/视频捕获和播放
Metal低级图形和GPGPU计算
Core ML设备端机器学习,本地推理
PushKit / UserNotifications推送通知、VoIP、内容更新

Core Data:处理本地数据

Core Data — 用于管理对象数据模型的框架。允许在UI线程和后台上下文之间保存、加载和同步对象。在iOS 17中,添加了SwiftData — 围绕Core Data的现代封装,支持Swift Macros。

UIKit和SwiftUI:方法比较

UIKitSwiftUI之间选择是开始iOS应用开发时的关键架构决策。UIKit自2007年存在,支持所有版本的iOS。SwiftUI于2019年推出,需要iOS 13+。

标准UIKitSwiftUI
范式命令式(MVC、MVVM)声明式(状态驱动)
最低iOSiOS 2.0+iOS 13.0+
设计代码中的Auto Layout或Interface BuilderModifier chain,HStack/VStack/ZStack
自定义完全(CALayer、drawRect)受修饰符限制
性能高(手动优化)自动失效
预览不支持实时Xcode Preview
测试XCTest + Snapshot测试XCTest + Preview测试

在实践中,大多数商业项目使用混合方法:SwiftUI用于新屏幕和简单表单,UIKit用于需要精细渲染控制的复杂自定义组件。Apple正在积极投资SwiftUI,预计到2028年它将成为主要框架。

iOS应用程序生命周期

每个iOS应用程序经历五种状态,由UIApplication和AppDelegate管理。在SwiftUI中,此角色由带有@main属性的App Protocol承担。

应用程序状态

Not running — 应用程序未启动或被系统终止。Inactive — 应用程序在前台,但不接收事件(例如来电时)。Active — 正常状态,应用程序接收触摸事件。Background — 应用程序最小化,执行后台任务。Suspended — 应用程序在内存中,但不执行代码。

swift
import SwiftUI

@main
struct MyApp: App {
    @Environment(\.scenePhase) private var scenePhase

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { oldPhase, newPhase in
            switch newPhase {
            case .active:
                print("应用程序变为活跃")
            case .inactive:
                print("应用程序不活跃")
            case .background:
                print("应用程序进入后台")
            @unknown default:
                break
            }
        }
    }
}

系统可能在内存不足时终止后台的应用程序。开发者应在onDisappear中或通过ScenePhase.background保存状态,以便用户在应用程序之间切换时不会丢失数据。

App Store:发布和要求

App Store — iOS唯一的官方应用商店。发布需要Apple Developer Program订阅(每年$99)。每个应用程序都经过审核——自动化(二进制代码静态分析)和手动(界面和内容检查)。

发布流程

开发者在Xcode中创建归档,通过Transporter或Xcode Organizer上传到App Store Connect。平均审核时间为24-48小时。App Review检查是否符合指南:数据安全、性能、HIG设计、无隐藏功能。

App Review要求

特别关注隐私:所有类型的数据收集必须在Privacy Manifest中声明。自2025年起,Apple要求说明使用API的原因(NSPrivacyAccessedAPITypes)。未经用户同意使用跟踪器的应用程序将被拒绝发布。

要求描述
Privacy Manifest所有收集数据及收集目的的声明
HIG Compliance符合Apple人机界面指南
Stability审核阶段无崩溃
Sandbox Rules仅允许访问已授权的资源
iCloud Entitlements正确配置iCloud Container

常见问题

iOS开发使用哪些语言?

主要语言是Swift。Objective-C也受支持,但主要用于旧项目。Swift是一种现代化的类型安全语言,由Apple于2014年推出。自2020年起,Apple推荐Swift作为新项目的唯一语言。

选择UIKit还是SwiftUI?

UIKit — 成熟的框架,最大程度可定制,适合复杂界面。SwiftUI — 用于iOS 13+的声明式框架,将开发速度提升2-3倍。大多数项目通过UIViewRepresentable和UIHostingController同时使用两种方法。

在App Store发布需要多少费用?

Apple Developer Program年度订阅个人开发者$99,组织$299。没有订阅则无法发布。App Store佣金为销售额的15-30%,取决于开发者的年收入。

SwiftUI的最低iOS版本是多少?

SwiftUI从iOS 13(2019)开始可用。但是,要使用所有功能,包括NavigationStack、Observable Macro和SwiftData,需要iOS 17和Xcode 15。对旧版本的支持限制了SwiftUI的功能。

iOS中的App Sandbox是什么?

App Sandbox — 安全模型,限制应用程序对文件系统、其他应用数据和系统资源的访问。每个应用程序在隔离的容器中运行。访问联系人、照片、麦克风需要通过系统对话框获得明确许可。

总结

  • iOS — 封闭的移动操作系统,具有XNU内核、应用程序沙盒和App Store强制审核
  • Swift — 用于iOS开发的现代语言,具有ARC、面向协议编程和async/await
  • iOS架构包括四个层级:Cocoa Touch、Media、Core Services、Core OS
  • Xcode — 唯一的开发环境,包括模拟器、Instruments和LLDB调试器
  • UIKit和SwiftUI — 两种界面方法:命令式和声明式,通常一起使用
  • App Store需要Developer Program订阅、Privacy Manifest并通过审核
  • iOS安全性由Secure Enclave、Sandbox和强制数据加密提供

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读