iOS: nó là gì, kiến trúc hệ thống và ngôn ngữ Swift

Tác giả: IT Sectr Đã đăng: 2026-02-07 Thời gian đọc: 10 phút

iOS là hệ điều hành di động của Apple, cung cấp năng lượng cho iPhone và iPod touch. Phát triển iOS được thực hiện bằng ngôn ngữ Swift trong môi trường Xcode. Hãy cùng khám phá kiến trúc nền tảng, các framework chính và quy trình xuất bản lên App Store.

Những điểm chính

  • iOS là hệ điều hành nguyên khối với nhân XNU, lớp nhân Darwin và lớp người dùng Cocoa Touch
  • Swift là ngôn ngữ phát triển chính với quản lý bộ nhớ tự động ARC và lập trình hướng giao thức
  • UIKit và SwiftUI là hai framework để xây dựng giao diện: mệnh lệnh và khai báo
  • App Store là kênh phân phối chính thức duy nhất với kiểm duyệt bắt buộc
  • App Sandbox là mô hình bảo mật cô lập mỗi ứng dụng trong một vùng chứa riêng

iOS là gì?

iOS là hệ điều hành di động của Apple, được phát hành lần đầu vào năm 2007 cùng với chiếc iPhone đầu tiên. Hệ thống được xây dựng trên vi nhân XNU, một nhân lai kết hợp các thành phần của Mach và FreeBSD. Không giống như Android, iOS là nền tảng đóng: việc cài đặt ứng dụng chỉ có thể thực hiện qua App Store và mã nguồn hệ thống không có sẵn.

Apple kiểm soát cả phần cứng và phần mềm, đảm bảo mức độ tối ưu hóa cao. Theo StatCounter (2026), thị phần của iOS trên thị trường hệ điều hành di động toàn cầu là khoảng 28% và vượt quá 50% tại Mỹ và Nhật Bản.

Hệ thống sử dụng mô hình App Sandbox — mỗi ứng dụng chạy trong một môi trường biệt lập và không thể truy cập dữ liệu của ứng dụng khác nếu không có sự cho phép rõ ràng từ người dùng thông qua hộp thoại hệ thống.

Lịch sử phiên bản iOS

Phiên bản đầu tiên iPhone OS 1.0 không hỗ trợ ứng dụng bên thứ ba. App Store ra mắt với iOS 2.0 vào năm 2008. Các mốc quan trọng: iOS 4 (đa nhiệm), iOS 7 (thiết kế phẳng), iOS 10 (iMessage Apps), iOS 14 (widget trên màn hình chính), iOS 17 (chế độ StandBy). Mỗi bản phát hành lớn đều mang đến API và framework mới.

Phiên bản iOSNămCải tiến chính
iPhone OS 12007Phiên bản đầu tiên, không có App Store
iOS 22008App Store, ứng dụng bên thứ ba
iOS 42010Đa nhiệm, FaceTime
iOS 72013Thiết kế lại toàn bộ giao diện
iOS 102016iMessage Apps, SiriKit
iOS 142020Widget, App Library, Picture in Picture
iOS 172023StandBy, NameDrop, Live Voicemail

Kiến trúc iOS: bốn lớp của hệ thống

Kiến trúc của iOS bao gồm bốn lớp trừu tượng, mỗi lớp cung cấp API cho lớp bên trên. Các lớp dưới cùng là nhân và dịch vụ hệ thống, các lớp trên là framework người dùng.

Cocoa Touch — lớp trên cùng

Cocoa Touch là lớp framework để xây dựng giao diện người dùng. Nó bao gồm UIKit, SwiftUI, Foundation, MapKit, NotificationCenter và các API khác mà nhà phát triển làm việc trực tiếp. UIKit cung cấp UIViewController, UIView, UIWindow và tất cả các thành phần trực quan.

Media — đồ họa và âm thanh

Lớp Media bao gồm Core Graphics, Core Animation, Core Image, AVFoundation và Metal. Metal là API GPU cấp thấp mang lại hiệu suất đồ họa cao trong game và ứng dụng thực tế tăng cường. Core Animation quản lý hoạt ảnh ở cấp lớp với tăng tốc phần cứng.

Core Services — dịch vụ hệ thống

Core Services bao gồm Core Data, CloudKit, Core Location, HealthKit, Core Motion và Network. CFNetwork là giao diện C cấp thấp để làm việc với các giao thức mạng. Foundation là một wrapper hướng đối tượng trên Core Foundation với các lớp NSString, NSArray, NSDictionary.

Core OS — nhân và bảo mật

Lớp dưới cùng bao gồm nhân XNU, hệ thống tệp APFS, mô-đun mật mã (CommonCrypto, Security.framework), quản lý nguồn điện và trình điều khiển thiết bị. Secure Enclave hoạt động ở cấp này — một bộ đồng xử lý để lưu trữ dữ liệu sinh trắc học và khóa mã hóa.

objective-c
// Kiểm tra tính toàn vẹn của Secure Enclave qua Security framework
#import <LocalAuthentication/LocalAuthentication.h>

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

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                          error:&error]) {
    NSLog(@"Secure Enclave khả dụng cho sinh trắc học");
} else {
    NSLog(@"Secure Enclave không khả dụng: %@", error.localizedDescription);
}

Swift — ngôn ngữ phát triển chính cho iOS

Swift là ngôn ngữ lập trình được Apple giới thiệu vào năm 2014 để thay thế Objective-C. Nó được Chris Lattner phát triển tại Apple. Swift kết hợp cú pháp của các ngôn ngữ hiện đại (Rust, Kotlin, C#) với hiệu suất ngang C. Theo TIOBE (2026), Swift nằm trong top 15 ngôn ngữ lập trình.

Các tính năng chính của Swift

Swift sử dụng Automatic Reference Counting (ARC) để quản lý bộ nhớ mà không cần bộ thu gom rác. Lập trình hướng giao thức (POP) cho phép mở rộng kiểu thông qua mở rộng giao thức. Optionals cung cấp xử lý nil an toàn về kiểu, và pattern matching đơn giản hóa logic rẽ nhánh.

swift
import UIKit

/// Giao thức cho dịch vụ tải dữ liệu
protocol DataServiceProtocol {
    associatedtype T
    func fetch(completion: @escaping (Result<[T], Error>) -> Void)
}

/// Triển khai dịch vụ tải người dùng
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
}

Ví dụ cho thấy triển khai dịch vụ tải dữ liệu sử dụng Swift Concurrency (async/await), giao thức với associatedtype và Codable để giải mã JSON. ARC tự động quản lý bộ nhớ và weak self ngăn chặn vòng tham chiếu mạnh trong closure.

Swift Concurrency: async/await và Actors

Từ iOS 13, Swift hỗ trợ bất đồng bộ tích hợp thông qua async/await và Actors — các kiểu an toàn luồng bảo vệ trạng thái khỏi điều kiện tranh đua. DispatchQueue cho đa luồng đang dần được thay thế bởi async/await và cấu trúc 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
    }
}

Actor UserRepository đảm bảo rằng việc truy cập bộ nhớ đệm diễn ra trên một luồng duy nhất, loại bỏ điều kiện tranh đua. Trình biên dịch kiểm tra sự cô lập tại thời điểm xây dựng — truy cập thuộc tính có thể thay đổi của actor chỉ có thể thực hiện qua await.

Xcode và công cụ phát triển

Xcode là môi trường phát triển tích hợp (IDE) của Apple, chỉ có sẵn trên macOS. Nó bao gồm trình soạn thảo mã, Interface Builder cho thiết kế trực quan, trình mô phỏng thiết bị, Instruments để phân tích và trình gỡ lỗi LLDB. Xcode 15 hỗ trợ Swift 5.9 với macro.

Interface Builder và Storyboards

Interface Builder cho phép tạo giao diện bằng cách kéo và thả với tự động tạo mô tả XML (XIB/Storyboard). Storyboards mô tả luồng màn hình. Từ năm 2023, Apple khuyến nghị SwiftUI Preview làm công cụ phát triển trực quan chính, mặc dù Interface Builder vẫn được sử dụng trong các dự án UIKit.

Công cụ gỡ lỗi và phân tích

Xcode Instruments bao gồm hàng chục mẫu: Time Profiler (phân tích CPU), Allocations (bộ nhớ), Leaks (rò rỉ), Core Animation (FPS), Network và Energy Log. Metal Debugger cho phép kiểm tra các lệnh gọi GPU và shader. LLDB là trình gỡ lỗi bảng điều khiển với hỗ trợ biểu thức Swift và điểm dừng có điều kiện.

Các framework chính trong phát triển iOS

iOS SDK bao gồm hàng trăm framework. Dưới đây là các framework chính mà mọi nhà phát triển iOS làm việc hàng ngày.

FrameworkMục đích
UIKitGiao diện: UIView, UIViewController, hoạt ảnh, cử chỉ
SwiftUIGiao diện khai báo với cập nhật phản ứng
FoundationKiểu cơ bản: String, Data, URLSession, JSONEncoder
Core DataORM để lưu trữ dữ liệu cục bộ trong SQLite
CloudKitĐồng bộ iCloud và logic máy chủ không cần backend
Core LocationĐịnh vị địa lý: GPS, geofencing, iBeacon
MapKitHiển thị bản đồ Apple, chú thích, tuyến đường
AVFoundationChụp và phát lại âm thanh/video
MetalĐồ họa cấp thấp và tính toán GPGPU
Core MLHọc máy trên thiết bị với suy luận cục bộ
PushKit / UserNotificationsThông báo push, VoIP, cập nhật nội dung

Core Data: làm việc với dữ liệu cục bộ

Core Data là framework để quản lý mô hình dữ liệu đối tượng. Nó cho phép lưu, tải và đồng bộ hóa các đối tượng giữa luồng UI và ngữ cảnh nền. iOS 17 đã giới thiệu SwiftData — một wrapper hiện đại trên Core Data với hỗ trợ Swift Macros.

UIKit vs SwiftUI: so sánh cách tiếp cận

Sự lựa chọn giữa UIKitSwiftUI là một quyết định kiến trúc quan trọng khi bắt đầu phát triển iOS. UIKit đã tồn tại từ năm 2007 và hỗ trợ tất cả các phiên bản iOS. SwiftUI được giới thiệu vào năm 2019 và yêu cầu iOS 13+.

Tiêu chíUIKitSwiftUI
Mô hìnhMệnh lệnh (MVC, MVVM)Khai báo (dựa trên trạng thái)
iOS tối thiểuiOS 2.0+iOS 13.0+
Bố cụcAuto Layout trong mã hoặc Interface BuilderChuỗi bổ nghĩa, HStack/VStack/ZStack
Tùy chỉnhHoàn toàn (CALayer, drawRect)Giới hạn bởi bổ nghĩa
Hiệu suấtCao (tối ưu thủ công)Tự động vô hiệu hóa
Xem trướcKhông hỗ trợXcode Preview thời gian thực
Kiểm thửXCTest + kiểm thử SnapshotXCTest + kiểm thử Preview

Trong thực tế, hầu hết các dự án thương mại sử dụng cách tiếp cận kết hợp: SwiftUI cho màn hình mới và biểu mẫu đơn giản, UIKit cho các thành phần tùy chỉnh phức tạp yêu cầu kiểm soát kết xuất chi tiết. Apple đang đầu tư mạnh vào SwiftUI và dự kiến nó sẽ trở thành framework chính vào năm 2028.

Vòng đời ứng dụng iOS

Mỗi ứng dụng iOS trải qua năm trạng thái được quản lý bởi UIApplication và AppDelegate. Trong SwiftUI, App Protocol với thuộc tính @main đảm nhận vai trò này.

Các trạng thái ứng dụng

Not running — ứng dụng chưa được khởi chạy hoặc đã bị hệ thống kết thúc. Inactive — ứng dụng ở tiền cảnh nhưng không nhận sự kiện (ví dụ: khi có cuộc gọi đến). Active — trạng thái bình thường, ứng dụng nhận sự kiện chạm. Background — ứng dụng được thu nhỏ, thực hiện tác vụ nền. Suspended — ứng dụng trong bộ nhớ nhưng không thực thi mã.

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("Ứng dụng đã hoạt động")
            case .inactive:
                print("Ứng dụng không hoạt động")
            case .background:
                print("Ứng dụng đã chuyển sang nền")
            @unknown default:
                break
            }
        }
    }
}

Hệ thống có thể kết thúc ứng dụng ở chế độ nền khi thiếu bộ nhớ. Nhà phát triển nên lưu trạng thái trong onDisappear hoặc qua ScenePhase.background để người dùng không mất dữ liệu khi chuyển đổi giữa các ứng dụng.

App Store: xuất bản và yêu cầu

App Store là cửa hàng ứng dụng chính thức duy nhất cho iOS. Xuất bản yêu cầu đăng ký Apple Developer Program ($99/năm). Mỗi ứng dụng đều trải qua kiểm duyệt — tự động (phân tích tĩnh mã nhị phân) và thủ công (kiểm tra giao diện và nội dung).

Quy trình xuất bản

Nhà phát triển tạo kho lưu trữ trong Xcode và tải lên qua Transporter hoặc Xcode Organizer lên App Store Connect. Thời gian kiểm duyệt trung bình là 24–48 giờ. App Review kiểm tra tuân thủ hướng dẫn: bảo mật dữ liệu, hiệu suất, thiết kế HIG, không có chức năng ẩn.

Yêu cầu của App Review

Đặc biệt chú trọng đến quyền riêng tư: tất cả các loại thu thập dữ liệu phải được khai báo trong Privacy Manifest. Từ năm 2025, Apple yêu cầu chỉ rõ lý do sử dụng API (NSPrivacyAccessedAPITypes). Ứng dụng sử dụng trình theo dõi mà không có sự đồng ý của người dùng sẽ bị từ chối xuất bản.

Yêu cầuMô tả
Privacy ManifestKhai báo tất cả dữ liệu được thu thập và mục đích thu thập
Tuân thủ HIGTuân thủ Human Interface Guidelines của Apple
Ổn địnhKhông có sự cố trong quá trình kiểm duyệt
Quy tắc SandboxChỉ truy cập tài nguyên được phép
Quyền iCloudCấu hình vùng chứa iCloud chính xác

Câu hỏi thường gặp

Những ngôn ngữ nào được sử dụng để phát triển iOS?

Ngôn ngữ chính là Swift. Objective-C cũng được hỗ trợ nhưng chủ yếu được sử dụng trong các dự án cũ. Swift là ngôn ngữ hiện đại, an toàn về kiểu được Apple giới thiệu vào năm 2014. Từ năm 2020, Apple khuyến nghị Swift là ngôn ngữ duy nhất cho các dự án mới.

Nên chọn UIKit hay SwiftUI?

UIKit là framework trưởng thành với khả năng tùy chỉnh tối đa, phù hợp cho giao diện phức tạp. SwiftUI là framework khai báo cho iOS 13+, tăng tốc phát triển 2–3 lần. Hầu hết các dự án sử dụng cả hai cách tiếp cận thông qua UIViewRepresentable và UIHostingController.

Chi phí xuất bản lên App Store là bao nhiêu?

Đăng ký Apple Developer Program hàng năm có giá $99 cho nhà phát triển cá nhân và $299 cho tổ chức. Không có đăng ký thì không thể xuất bản. Hoa hồng App Store là 15–30% doanh số tùy thuộc vào thu nhập hàng năm của nhà phát triển.

Phiên bản iOS tối thiểu cho SwiftUI là gì?

SwiftUI có sẵn từ iOS 13 (2019). Tuy nhiên, để sử dụng tất cả các tính năng bao gồm NavigationStack, Observable Macro và SwiftData, cần có iOS 17 và Xcode 15. Hỗ trợ các phiên bản cũ hơn sẽ hạn chế chức năng của SwiftUI.

App Sandbox trong iOS là gì?

App Sandbox là mô hình bảo mật hạn chế quyền truy cập của ứng dụng vào hệ thống tệp, dữ liệu của ứng dụng khác và tài nguyên hệ thống. Mỗi ứng dụng chạy trong một vùng chứa biệt lập. Truy cập vào danh bạ, ảnh, micrô cần có sự cho phép rõ ràng thông qua hộp thoại hệ thống.

Tổng kết

  • iOS là hệ điều hành di động đóng với nhân XNU, sandbox ứng dụng và kiểm duyệt App Store bắt buộc
  • Swift là ngôn ngữ hiện đại cho phát triển iOS với ARC, lập trình hướng giao thức và async/await
  • Kiến trúc iOS bao gồm bốn lớp: Cocoa Touch, Media, Core Services, Core OS
  • Xcode là môi trường phát triển duy nhất, bao gồm trình mô phỏng, Instruments và trình gỡ lỗi LLDB
  • UIKit và SwiftUI là hai cách tiếp cận giao diện — mệnh lệnh và khai báo, thường được sử dụng cùng nhau
  • App Store yêu cầu đăng ký Developer Program, Privacy Manifest và kiểm duyệt
  • Bảo mật iOS được đảm bảo bởi Secure Enclave, Sandbox và mã hóa dữ liệu bắt buộc

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm