iOS: nedir, sistem mimarisi ve Swift dili

Yazar: IT Sectr Yayınlanma: 2026-02-07 Okuma süresi: 10 dk

iOS, iPhone ve iPod touch'ı çalıştıran Apple'ın mobil işletim sistemidir. iOS geliştirme, Xcode ortamında Swift dili ile yapılır. Platform mimarisini, temel framework'leri ve App Store yayınlama sürecini inceleyelim.

Önemli Noktalar

  • iOS, XNU çekirdeği, Darwin çekirdek katmanı ve Cocoa Touch kullanıcı katmanına sahip monolitik bir işletim sistemidir
  • Swift, ARC otomatik bellek yönetimi ve protokol odaklı programlama ile ana geliştirme dilidir
  • UIKit ve SwiftUI arayüz oluşturmak için iki framework'tür: imperative ve deklaratif
  • App Store, zorunlu denetim ile tek resmi dağıtım kanalıdır
  • App Sandbox, her uygulamayı ayrı bir kapsayıcıda izole eden bir güvenlik modelidir

iOS nedir?

iOS, Apple'ın mobil işletim sistemidir ve ilk olarak 2007'de ilk iPhone ile birlikte piyasaya sürülmüştür. Sistem, Mach ve FreeBSD bileşenlerini birleştiren hibrit bir çekirdek olan XNU mikro çekirdeği üzerine inşa edilmiştir. Android'in aksine iOS kapalı bir platformdur: uygulama kurulumu yalnızca App Store üzerinden mümkündür ve sistem kaynak kodu mevcut değildir.

Apple hem donanımı hem de yazılımı kontrol ederek yüksek düzeyde optimizasyon sağlar. StatCounter'a (2026) göre iOS'un küresel mobil işletim sistemi pazarındaki payı yaklaşık %28'dir ve ABD ile Japonya'da %50'yi aşmaktadır.

Sistem App Sandbox modelini kullanır — her uygulama izole bir ortamda çalışır ve sistem diyalogları aracılığıyla açık kullanıcı izni olmadan diğer uygulamaların verilerine erişemez.

iOS sürüm geçmişi

İlk sürüm olan iPhone OS 1.0, üçüncü taraf uygulamaları desteklemiyordu. App Store, 2008'de iOS 2.0 ile geldi. Önemli dönüm noktaları: iOS 4 (çoklu görev), iOS 7 (düz tasarım), iOS 10 (iMessage uygulamaları), iOS 14 (masaüstü widget'ları), iOS 17 (StandBy modu). Her büyük sürüm, yeni API'ler ve framework'ler getirir.

iOS SürümüYılÖnemli Yenilik
iPhone OS 12007İlk sürüm, App Store yok
iOS 22008App Store, üçüncü taraf uygulamalar
iOS 42010Çoklu görev, FaceTime
iOS 72013Tam arayüz yeniden tasarımı
iOS 102016iMessage uygulamaları, SiriKit
iOS 142020Widget'lar, App Library, Picture in Picture
iOS 172023StandBy, NameDrop, Live Voicemail

iOS Mimarisi: Sistemin dört katmanı

iOS mimarisi, her biri üst katmana API sağlayan dört soyut katmandan oluşur. Alt katmanlar çekirdek ve sistem hizmetleri, üst katmanlar ise kullanıcı framework'leridir.

Cocoa Touch — en üst katman

Cocoa Touch, kullanıcı arayüzü oluşturmak için framework katmanıdır. Geliştiricinin doğrudan çalıştığı UIKit, SwiftUI, Foundation, MapKit, NotificationCenter ve diğer API'leri içerir. UIKit, UIViewController, UIView, UIWindow ve tüm görsel bileşenleri sağlar.

Media — grafik ve ses

Media katmanı Core Graphics, Core Animation, Core Image, AVFoundation ve Metal'i içerir. Metal, oyunlarda ve artırılmış gerçeklik uygulamalarında yüksek grafik performansı sağlayan düşük seviyeli bir GPU API'sidir. Core Animation, donanım hızlandırmalı olarak katman düzeyinde animasyonları yönetir.

Core Services — sistem hizmetleri

Core Services, Core Data, CloudKit, Core Location, HealthKit, Core Motion ve Network'ü içerir. CFNetwork, ağ protokolleriyle çalışmak için düşük seviyeli bir C arayüzüdür. Foundation, NSString, NSArray, NSDictionary sınıflarıyla Core Foundation üzerinde nesne yönelimli bir sarmalayıcıdır.

Core OS — çekirdek ve güvenlik

En alt katman XNU çekirdeğini, APFS dosya sistemini, kriptografik modülleri (CommonCrypto, Security.framework), güç yönetimini ve aygıt sürücülerini içerir. Bu seviyede Secure Enclave çalışır — biyometrik verileri ve şifreleme anahtarlarını depolamak için bir yardımcı işlemci.

objective-c
// Security framework aracılığıyla Secure Enclave bütünlük kontrolü
#import <LocalAuthentication/LocalAuthentication.h>

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

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                          error:&error]) {
    NSLog(@"Secure Enclave biyometri için kullanılabilir");
} else {
    NSLog(@"Secure Enclave kullanılamıyor: %@", error.localizedDescription);
}

Swift — iOS geliştirme için ana dil

Swift, Apple tarafından 2014 yılında Objective-C'nin yerine geçmek üzere tanıtılan bir programlama dilidir. Apple'da Chris Lattner tarafından geliştirilmiştir. Swift, modern dillerin (Rust, Kotlin, C#) sözdizimini C düzeyinde performansla birleştirir. TIOBE'ye (2026) göre Swift, ilk 15 programlama dili arasındadır.

Swift'in temel özellikleri

Swift, çöp toplayıcı olmadan bellek yönetimi için Automatic Reference Counting (ARC) kullanır. Protokol odaklı programlama (POP), protokol uzantıları aracılığıyla türlerin genişletilmesine olanak tanır. Optional'lar, nil'in tür güvenli bir şekilde işlenmesini sağlar ve pattern matching, dallanma mantığını basitleştirir.

swift
import UIKit

/// Veri yükleme hizmeti için protokol
protocol DataServiceProtocol {
    associatedtype T
    func fetch(completion: @escaping (Result<[T], Error>) -> Void)
}

/// Kullanıcıları yüklemek için hizmet uygulaması
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
}

Örnek, Swift Concurrency (async/await), associatedtype içeren bir protokol ve JSON kod çözme için Codable kullanan bir veri yükleme hizmeti uygulamasını gösterir. ARC belleği otomatik olarak yönetir ve weak self, closure'lardaki güçlü referans döngülerini önler.

Swift Concurrency: async/await ve Actors

iOS 13'ten itibaren Swift, async/await ve Actors aracılığıyla yerleşik eşzamansızlığı destekler — veri yarışlarına karşı durumu koruyan iş parçacığı güvenli türler. Çoklu iş parçacığı için DispatchQueue, kademeli olarak async/await ve Task yapılarıyla değiştirilmektedir.

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
    }
}

UserRepository aktörü, önbellek erişiminin tek bir iş parçacığında gerçekleşmesini sağlayarak yarış durumlarını ortadan kaldırır. Derleyici, derleme zamanında yalıtımı kontrol eder — bir aktörün değiştirilebilir özelliğine erişim yalnızca await aracılığıyla mümkündür.

Xcode ve geliştirici araçları

Xcode, Apple'ın yalnızca macOS'ta bulunan entegre geliştirme ortamıdır (IDE). Kod düzenleyici, görsel düzen için Interface Builder, aygıt simülatörü, profilleme için Instruments ve LLDB hata ayıklayıcıyı içerir. Xcode 15, makrolarla Swift 5.9'u destekler.

Interface Builder ve Storyboard'lar

Interface Builder, otomatik XML tanımı (XIB/Storyboard) oluşturma ile sürükle-bırak yoluyla arayüzler oluşturmayı sağlar. Storyboard'lar ekran akışlarını tanımlar. 2023'ten itibaren Apple, SwiftUI Preview'yi ana görsel geliştirme aracı olarak önermektedir, ancak Interface Builder UIKit projelerinde kullanılmaya devam etmektedir.

Hata ayıklama ve profilleme araçları

Xcode Instruments, düzinelerce şablon içerir: Time Profiler (CPU analizi), Allocations (bellek), Leaks (sızıntılar), Core Animation (FPS), Network ve Energy Log. Metal Debugger, GPU çağrılarını ve gölgelendiricileri incelemeye olanak tanır. LLDB, Swift ifade desteği ve koşullu kesme noktalarına sahip bir konsol hata ayıklayıcısıdır.

iOS geliştirmenin temel framework'leri

iOS SDK yüzlerce framework içerir. Aşağıda, her iOS geliştiricisinin günlük olarak çalıştığı temel framework'ler bulunmaktadır.

FrameworkAmaç
UIKitArayüz: UIView, UIViewController, animasyonlar, jestler
SwiftUITepkisel güncellemelerle bildirimsel arayüz
FoundationTemel türler: String, Data, URLSession, JSONEncoder
Core DataSQLite'da yerel veri depolama için ORM
CloudKitiCloud senkronizasyonu ve backend olmadan sunucu tarafı mantığı
Core LocationCoğrafi konum: GPS, geofencing, iBeacon
MapKitApple Haritalar görüntüleme, açıklamalar, rotalar
AVFoundationSes/video yakalama ve oynatma
MetalDüşük seviyeli grafikler ve GPGPU hesaplama
Core MLCihaz üzerinde çıkarım ile makine öğrenimi
PushKit / UserNotificationsPush bildirimleri, VoIP, içerik güncellemeleri

Core Data: yerel verilerle çalışma

Core Data, nesne veri modelini yönetmek için bir framework'tür. UI iş parçacığı ve arka plan bağlamları arasında nesneleri kaydetmeye, yüklemeye ve senkronize etmeye olanak tanır. iOS 17, SwiftData'yı tanıttı — Swift Macros desteğiyle Core Data üzerinde modern bir sarmalayıcı.

UIKit ve SwiftUI: yaklaşım karşılaştırması

UIKit ve SwiftUI arasındaki seçim, iOS geliştirmeye başlarken önemli bir mimari karardır. UIKit 2007'den beri vardır ve tüm iOS sürümlerini destekler. SwiftUI 2019'da tanıtılmıştır ve iOS 13+ gerektirir.

KriterUIKitSwiftUI
ParadigmaEmir kipi (MVC, MVVM)Bildirimsel (durum tabanlı)
Minimum iOSiOS 2.0+iOS 13.0+
DüzenKodda veya Interface Builder'da Auto LayoutDeğiştirici zinciri, HStack/VStack/ZStack
ÖzelleştirmeTam (CALayer, drawRect)Değiştiricilerle sınırlı
PerformansYüksek (manuel optimizasyon)Otomatik geçersiz kılma
ÖnizlemeDesteklenmezGerçek zamanlı Xcode Preview
TestXCTest + Snapshot testleriXCTest + Preview testleri

Pratikte, çoğu ticari proje hibrit bir yaklaşım kullanır: yeni ekranlar ve basit formlar için SwiftUI, ince işleme kontrolü gerektiren karmaşık özel bileşenler için UIKit. Apple, SwiftUI'ye aktif olarak yatırım yapmaktadır ve 2028'e kadar ana framework haline gelmesi beklenmektedir.

iOS uygulaması yaşam döngüsü

Her iOS uygulaması, UIApplication ve AppDelegate tarafından yönetilen beş durumdan geçer. SwiftUI'de, @main özniteliğine sahip App Protocol bu rolü üstlenir.

Uygulama durumları

Not running — uygulama başlatılmamış veya sistem tarafından sonlandırılmıştır. Inactive — uygulama ön plandadır ancak olay almaz (örneğin, gelen bir arama sırasında). Active — normal durum, uygulama dokunma olaylarını alır. Background — uygulama simge durumuna küçültülmüş, arka plan görevlerini yürütür. Suspended — uygulama bellekte ancak kod çalıştırmıyor.

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("Uygulama etkin hale geldi")
            case .inactive:
                print("Uygulama etkin değil")
            case .background:
                print("Uygulama arka plana geçti")
            @unknown default:
                break
            }
        }
    }
}

Sistem, bellek yetersiz olduğunda uygulamayı arka planda sonlandırabilir. Geliştirici, kullanıcının uygulamalar arasında geçiş yaparken veri kaybetmemesi için durumu onDisappear veya ScenePhase.background aracılığıyla kaydetmelidir.

App Store: yayınlama ve gereksinimler

App Store, iOS için tek resmi uygulama mağazasıdır. Yayınlamak için Apple Developer Program aboneliği ($99/yıl) gerekir. Her uygulama denetimden geçer — otomatik (ikili kodun statik analizi) ve manuel (arayüz ve içerik incelemesi).

Yayınlama süreci

Geliştirici, Xcode'da bir arşiv oluşturur ve Transporter veya Xcode Organizer aracılığıyla App Store Connect'e yükler. Ortalama denetim süresi 24–48 saattir. App Review, yönergelere uygunluğu kontrol eder: veri güvenliği, performans, HIG tasarımı, gizli işlevsellik olmaması.

App Review gereksinimleri

Gizliliğe özel önem verilir: tüm veri toplama türleri Privacy Manifest'te beyan edilmelidir. 2025'ten itibaren Apple, API kullanım nedenlerinin (NSPrivacyAccessedAPITypes) belirtilmesini zorunlu kılmaktadır. Kullanıcı izni olmadan izleyici kullanan uygulamalar reddedilir.

GereksinimAçıklama
Privacy ManifestToplanan tüm verilerin ve toplama amaçlarının beyanı
HIG UyumluluğuApple Human Interface Guidelines'a uygunluk
KararlılıkDenetim sırasında çökme olmaması
Sandbox KurallarıYalnızca izin verilen kaynaklara erişim
iCloud YetkilendirmeleriDoğru iCloud kapsayıcı yapılandırması

Sıkça sorulan sorular

iOS geliştirme için hangi diller kullanılır?

Ana dil Swift'tir. Objective-C de desteklenmektedir ancak çoğunlukla eski projelerde kullanılır. Swift, Apple tarafından 2014'te tanıtılan modern, tür güvenli bir dildir. 2020'den bu yana Apple, yeni projeler için tek dil olarak Swift'i önermektedir.

Hangisini seçmeliyim: UIKit mi SwiftUI mi?

UIKit, maksimum özelleştirme ile olgun bir framework'tür, karmaşık arayüzler için uygundur. SwiftUI, iOS 13+ için bildirimsel bir framework'tür, geliştirmeyi 2–3 kat hızlandırır. Çoğu proje, UIViewRepresentable ve UIHostingController aracılığıyla her iki yaklaşımı da kullanır.

App Store'da yayınlamanın maliyeti nedir?

Apple Developer Program yıllık aboneliği bireysel geliştiriciler için $99, kuruluşlar için $299'dur. Abonelik olmadan yayınlama mümkün değildir. App Store komisyonu, geliştiricinin yıllık gelirine bağlı olarak satışların %15–30'udur.

SwiftUI için minimum iOS sürümü nedir?

SwiftUI, iOS 13'ten (2019) itibaren kullanılabilir. Ancak NavigationStack, Observable Macro ve SwiftData dahil tüm özellikleri kullanmak için iOS 17 ve Xcode 15 gereklidir. Eski sürümlerin desteği SwiftUI işlevselliğini sınırlar.

iOS'ta App Sandbox nedir?

App Sandbox, bir uygulamanın dosya sistemine, diğer uygulamaların verilerine ve sistem kaynaklarına erişimini kısıtlayan bir güvenlik modelidir. Her uygulama izole bir kapsayıcıda çalışır. Kişilere, fotoğraflara, mikrofona erişim, sistem diyalogu aracılığıyla açık izin gerektirir.

Özet

  • iOS, XNU çekirdeği, uygulama sandbox'ı ve zorunlu App Store denetimi ile kapalı bir mobil işletim sistemidir
  • Swift, ARC, protokol odaklı programlama ve async/await ile iOS geliştirme için modern bir dildir
  • iOS Mimarisi dört katman içerir: Cocoa Touch, Media, Core Services, Core OS
  • Xcode, simülatör, Instruments ve LLDB hata ayıklayıcıyı içeren tek geliştirme ortamıdır
  • UIKit ve SwiftUI iki arayüz yaklaşımıdır — imperative ve deklaratif, genellikle birlikte kullanılır
  • App Store, Developer Program aboneliği, Privacy Manifest ve denetim gerektirir
  • iOS Güvenliği, Secure Enclave, Sandbox ve zorunlu veri şifreleme ile sağlanır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun