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 که اولین بار در سال ۲۰۰۷ همراه با اولین iPhone منتشر شد. این سیستم بر پایه ریزهسته XNU ساخته شده است، هسته‌ای ترکیبی که اجزای Mach و FreeBSD را در خود دارد. برخلاف Android، iOS یک پلتفرم بسته است: نصب اپلیکیشن‌ها فقط از طریق App Store امکان‌پذیر است و کد منبع سیستم در دسترس نیست.

Apple هم سخت‌افزار و هم نرم‌افزار را کنترل می‌کند که سطح بالایی از بهینه‌سازی را تضمین می‌کند. طبق StatCounter (۲۰۲۶)، سهم iOS در بازار سیستم‌عامل‌های موبایل حدود ۲۸٪ در مقیاس جهانی است و در ایالات متحده و ژاپن از ۵۰٪ فراتر می‌رود.

سیستم از مدل سندباکس (App Sandbox) استفاده می‌کند — هر اپلیکیشن در یک محیط ایزوله کار می‌کند و بدون اجازه صریح کاربر از طریق دیالوگ‌های سیستمی به داده‌های سایر اپلیکیشن‌ها دسترسی ندارد.

تاریخچه نسخه‌های iOS

نسخه اول iPhone OS 1.0 از اپلیکیشن‌های شخص ثالث پشتیبانی نمی‌کرد. App Store در iOS 2.0 در سال ۲۰۰۸ ظاهر شد. نقاط عطف کلیدی: iOS 4 (چندوظیفگی)، iOS 7 (طراحی تخت)، iOS 10 (iMessage Apps)، iOS 14 (ویجت‌ها در دسکتاپ)، iOS 17 (حالت StandBy). هر نسخه اصلی APIها و فریم‌ورک‌های جدیدی به همراه دارد.

نسخه iOSسالنوآوری کلیدی
iPhone OS 1۲۰۰۷نسخه اول، بدون App Store
iOS 2۲۰۰۸App Store، اپلیکیشن‌های شخص ثالث
iOS 4۲۰۱۰چندوظیفگی، FaceTime
iOS 7۲۰۱۳بازطراحی کامل رابط کاربری
iOS 10۲۰۱۶iMessage Apps، SiriKit
iOS 14۲۰۲۰ویجت‌ها، App Library، Picture in Picture
iOS 17۲۰۲۳StandBy، 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 — API سطح پایین برای کار با GPU که عملکرد بالای گرافیک را در بازی‌ها و اپلیکیشن‌های واقعیت افزوده تضمین می‌کند. 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
// بررسی یکپارچگی Secure Enclave از طریق Security framework
#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 در سال ۲۰۱۴ به عنوان جایگزین Objective-C. توسط کریس لتنر در Apple توسعه یافته است. Swift ترکیبی از نحو زبان‌های مدرن (Rust، Kotlin، C#) با عملکرد در سطح C است. طبق TIOBE (۲۰۲۶)، Swift در بین ۱۵ زبان برنامه‌نویسی برتر قرار دارد.

قابلیت‌های کلیدی Swift

Swift از Automatic Reference Counting (ARC) — شمارش خودکار مراجع برای مدیریت حافظه بدون زباله‌روب استفاده می‌کند. برنامه‌نویسی پروتکل‌محور (POP) امکان گسترش انواع را از طریق protocol extension فراهم می‌کند. Optionals کار با nil را به صورت نوع‌امن تضمین می‌کند و pattern matching پردازش شاخه‌ها را ساده می‌کند.

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 از چرخه‌های ارجاع قوی در بسته (closure) جلوگیری می‌کند.

Swift Concurrency: async/await و Actors

از iOS 13، Swift از ناهمزمانی داخلی از طریق async/await و Actors پشتیبانی می‌کند — انواع امن از نظر نخ که وضعیت را از data races محافظت می‌کنند. 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
    }
}

actor UserRepository تضمین می‌کند که دسترسی به حافظه پنهان در یک نخ انجام می‌شود و شرایط رقابت (race conditions) را حذف می‌کند. کامپایلر ایزوله بودن را در مرحله ساخت بررسی می‌کند — دسترسی به ویژگی mutable یک actor فقط از طریق await امکان‌پذیر است.

Xcode و ابزارهای توسعه‌دهنده

Xcode — محیط توسعه یکپارچه (IDE) از Apple که منحصراً در macOS در دسترس است. شامل ویرایشگر کد، Interface Builder برای طراحی بصری، شبیه‌ساز دستگاه، Instruments برای پروفایلینگ و دیباگر LLDB است. Xcode 15 از Swift 5.9 با ماکروها پشتیبانی می‌کند.

Interface Builder و Storyboards

Interface Builder امکان ایجاد رابط کاربری به روش کشیدن و رها کردن با تولید خودکار توصیف XML (XIB/Storyboard) را فراهم می‌کند. Storyboards جریان صفحات را توصیف می‌کنند. از سال ۲۰۲۳، 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 DataORM برای ذخیره‌سازی محلی داده در SQLite
CloudKitهمگام‌سازی با iCloud و منطق سرور بدون بک‌اند
Core Locationمکان‌یابی: GPS، geofencing، iBeacon
MapKitنمایش نقشه‌های Apple، حاشیه‌نویسی، مسیرها
AVFoundationضبط و پخش صوت/ویدئو
Metalگرافیک سطح پایین و محاسبات GPGPU
Core MLیادگیری ماشین روی دستگاه با استنتاج محلی
PushKit / UserNotificationsاعلان‌های Push، VoIP، به‌روزرسانی محتوا

Core Data: کار با داده‌های محلی

Core Data — فریم‌ورک مدیریت مدل داده شی‌گرا. امکان ذخیره، بارگذاری و همگام‌سازی اشیاء بین نخ UI و زمینه‌های پس‌زمینه را فراهم می‌کند. در iOS 17، SwiftData اضافه شده است — پوشش مدرن بر روی Core Data با پشتیبانی از Swift Macros.

UIKit و SwiftUI: مقایسه رویکردها

انتخاب بین UIKit و SwiftUI — تصمیم معماری کلیدی در شروع توسعه اپلیکیشن iOS است. UIKit از سال ۲۰۰۷ وجود دارد و از تمام نسخه‌های iOS پشتیبانی می‌کند. SwiftUI در سال ۲۰۱۹ معرفی شد و به iOS 13+ نیاز دارد.

معیارUIKitSwiftUI
پارادایمامری (MVC، MVVM)اعلامی (State-driven)
حداقل iOSiOS 2.0+iOS 13.0+
طراحیAuto Layout در کد یا Interface BuilderModifier chain، HStack/VStack/ZStack
شخصی‌سازیکامل (CALayer، drawRect)محدود با اصلاح‌کننده‌ها
عملکردبالا (بهینه‌سازی دستی)باطل‌سازی خودکار
Previewپشتیبانی نمی‌کندXcode Preview در زمان واقعی
تستXCTest + تست‌های SnapshotXCTest + تست‌های Preview

در عمل، اکثر پروژه‌های تجاری از رویکرد ترکیبی استفاده می‌کنند: SwiftUI برای صفحات جدید و فرم‌های ساده، UIKit برای کامپوننت‌های سفارشی پیچیده که نیاز به کنترل دقیق رندر دارند. Apple به طور فعال در SwiftUI سرمایه‌گذاری می‌کند و انتظار می‌رود تا سال ۲۰۲۸ به فریم‌ورک اصلی تبدیل شود.

چرخه حیات اپلیکیشن iOS

هر اپلیکیشن iOS پنج حالت را طی می‌کند که توسط UIApplication و AppDelegate مدیریت می‌شوند. در SwiftUI این نقش توسط App Protocol با ویژگی @main انجام می‌شود.

حالت‌های اپلیکیشن

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 آپلود می‌کند. میانگین زمان بررسی ۲۴–۴۸ ساعت است. App Review مطابقت با دستورالعمل‌ها را بررسی می‌کند: امنیت داده، عملکرد، طراحی HIG، عدم وجود عملکرد پنهان.

الزامات App Review

توجه ویژه به حریم خصوصی: همه انواع جمع‌آوری داده باید در Privacy Manifest اعلام شوند. از سال ۲۰۲۵، Apple نیاز به ذکر دلایل استفاده از API دارد (NSPrivacyAccessedAPITypes). اپلیکیشن‌هایی که بدون رضایت کاربر از ردیاب‌ها استفاده می‌کنند رد می‌شوند.

الزامتوضیح
Privacy Manifestاعلامیه تمام داده‌های جمع‌آوری‌شده و اهداف جمع‌آوری
HIG Complianceمطابقت با Human Interface Guidelines اپل
Stabilityعدم کرش در مرحله بررسی
Sandbox Rulesدسترسی فقط به منابع مجاز
iCloud Entitlementsپیکربندی صحیح iCloud Container

سوالات متداول

چه زبان‌هایی برای توسعه iOS استفاده می‌شود؟

زبان اصلی — Swift. Objective-C نیز پشتیبانی می‌شود، اما عمدتاً در پروژه‌های قدیمی استفاده می‌شود. Swift یک زبان مدرن با امنیت نوع است که توسط Apple در سال ۲۰۱۴ معرفی شد. از سال ۲۰۲۰، Apple Swift را به عنوان تنها زبان برای پروژه‌های جدید توصیه می‌کند.

چه چیزی را انتخاب کنیم: UIKit یا SwiftUI؟

UIKit — فریم‌ورک بالغ با حداکثر شخصی‌سازی، مناسب برای رابط‌های پیچیده. SwiftUI — فریم‌ورک اعلامی برای iOS 13+ که توسعه را ۲–۳ برابر加速 می‌بخشد. اکثر پروژه‌ها از هر دو رویکرد از طریق UIViewRepresentable و UIHostingController استفاده می‌کنند.

هزینه انتشار در App Store چقدر است؟

اشتراک سالانه Apple Developer Program برای توسعه‌دهندگان فردی ۹۹ دلار و برای سازمان‌ها ۲۹۹ دلار است. بدون اشتراک انتشار امکان‌پذیر نیست. کمیسیون App Store ۱۵–۳۰٪ از فروش بسته به درآمد سالانه توسعه‌دهنده است.

حداقل نسخه iOS برای SwiftUI چیست؟

SwiftUI از iOS 13 (۲۰۱۹) در دسترس است. با این حال، برای استفاده از تمام قابلیت‌ها از جمله NavigationStack، Observable Macro و SwiftData، iOS 17 و Xcode 15 مورد نیاز است. پشتیبانی از نسخه‌های قدیمی عملکرد SwiftUI را محدود می‌کند.

App Sandbox در iOS چیست؟

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 را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید