iOS — мобилни оперативни систем компаније Apple који омогућава рад iPhone и iPod touch уређаја. Развој за iOS се обавља у језику Swift у окружењу Xcode. Размотрићемо архитектуру платформе, кључне фрејмворкове и процес објављивања у App Store-у.
Главне тачке
iOS — мобилни оперативни систем компаније Apple, први пут објављен 2007. године заједно са првим iPhone-ом. Систем је изграђен на микројезгру XNU, хибридном језгру које комбинује Mach и FreeBSD компоненте. За разлику од Android-а, iOS је затворена платформа: инсталација апликација је могућа само преко App Store-а, а изворни код система није доступан.
Apple контролише и хардвер и софтвер, што обезбеђује висок ниво оптимизације. Према StatCounter-у (2026), удео iOS-а на тржишту мобилних ОС износи око 28% на глобалном нивоу и прелази 50% у САД и Јапану.
Систем користи модел песочнице (App Sandbox) — свака апликација ради у изолованом окружењу и нема приступ подацима других апликација без изричите дозволе корисника кроз системске дијалоге.
Прва верзија iPhone OS 1.0 није подржавала апликације трећих страна. App Store се појавио у iOS 2.0 2008. године. Кључне прекретнице: iOS 4 (вишезадатност), iOS 7 (равни дизајн), iOS 10 (iMessage Apps), iOS 14 (виџети на радној површини), iOS 17 (StandBy режим). Сваки велики издање доноси нове API-је и фрејмворкове.
| Верзија iOS | Година | Кључна иновација |
|---|---|---|
| iPhone OS 1 | 2007 | Прва верзија, без App Store-а |
| iOS 2 | 2008 | App Store, апликације трећих страна |
| iOS 4 | 2010 | Вишезадатност, FaceTime |
| iOS 7 | 2013 | Потпуни редизајн интерфејса |
| iOS 10 | 2016 | iMessage Apps, SiriKit |
| iOS 14 | 2020 | Виџети, App Library, Picture in Picture |
| iOS 17 | 2023 | StandBy, NameDrop, Live Voicemail |
Архитектура iOS-а састоји се од четири апстрактна нивоа, од којих сваки пружа API за виши ниво. Доњи нивои су језгро и системске услуге, горњи су кориснички фрејмворкови.
Cocoa Touch — слој фрејмворкова за изградњу корисничког интерфејса. Садржи UIKit, SwiftUI, Foundation, MapKit, NotificationCenter и друге API-је са којима програмер директно ради. UIKit пружа UIViewController, UIView, UIWindow и све визуелне компоненте.
Ниво Media укључује Core Graphics, Core Animation, Core Image, AVFoundation и Metal. Metal — нискoнивоски API за рад са GPU, који обезбеђује високе перформансе графике у играма и апликацијама проширене стварности. Core Animation управља анимацијама на нивоу слојева са хардверским убрзањем.
Core Services укључује Core Data, CloudKit, Core Location, HealthKit, Core Motion и Network. CFNetwork — нискoнивоски C-интерфејс за рад са мрежним протоколима. Foundation — објектно-оријентисани омотач око Core Foundation са класама NSString, NSArray, NSDictionary.
Доњи ниво укључује XNU-језгро, фајл систем APFS, криптографске модуле (CommonCrypto, Security.framework), управљање енергијом и драјвере уређаја. На овом нивоу ради Secure Enclave — копроцесор за чување биометријских података и кључева за шифровање.
// Провера интегритета 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 — програмски језик који је Apple представио 2014. године као замену за Objective-C. Развио га је Крис Латнер у Apple-у. Swift комбинује синтаксу савремених језика (Rust, Kotlin, C#) са перформансама на нивоу C-а. Према TIOBE (2026), Swift се налази у топ 15 програмских језика.
Swift користи Automatic Reference Counting (ARC) — аутоматско бројање референци за управљање меморијом без сакупљача отпада. Протокол-оријентисано програмирање (POP) омогућава проширење типова кроз protocol extension. Optionals обезбеђују типно-безбедан рад са nil, а pattern matching поједностављује обраду гранања.
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 спречава циклусе јаких референци у затварању.
Од iOS 13, Swift подржава уграђену асинхроност кроз async/await и Actors — типно-безбедне типове који штите стање од data races. DispatchQueue за вишенитност се постепено замењује структурама async/await и Task.
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 гарантује да се приступ кешу одвија у једној нити, елиминишући стања трке. Компајлер проверава изолацију у фази компилације — приступ mutable својству актора могућ је само кроз await.
Xcode — интегрисано развојно окружење (IDE) од Apple-а, доступно искључиво на macOS-у. Укључује уређивач кода, Interface Builder за визуелни дизајн, симулатор уређаја, Instruments за профилисање и дебагер LLDB. Xcode 15 подржава Swift 5.9 са макроима.
Interface Builder омогућава креирање интерфејса путем превуци-и-пусти са аутоматском генерацијом XML описа (XIB/Storyboard). Storyboards описују токове екрана. Од 2023. године Apple препоручује SwiftUI Preview као главни алат за визуелни развој, иако Interface Builder остаје у пројектима на UIKit-у.
Xcode Instruments укључује десетине шаблона: Time Profiler (анализа CPU), Allocations (меморија), Leaks (цурeња), Core Animation (FPS), Network и Energy Log. Metal Debugger омогућава инспекцију GPU позива и shader-а. LLDB — конзолни дебагер са подршком за Swift изразе и условне тачке прекида.
iOS SDK укључује стотине фрејмворкова. Испод су наведени кључни фрејмворкови са којима сваки iOS програмер ради свакодневно.
| Фрејмворк | Намена |
|---|---|
| UIKit | Интерфејс: UIView, UIViewController, анимације, покрети |
| SwiftUI | Декларативни интерфејс са реактивним ажурирањем |
| Foundation | Основни типови: String, Data, URLSession, JSONEncoder |
| Core Data | ORM за локално складиштење података у SQLite |
| CloudKit | Синхронизација са iCloud-ом и серверска логика без бекенда |
| Core Location | Геолокација: GPS, geofencing, iBeacon |
| MapKit | Приказ Apple мапа, анотације, руте |
| AVFoundation | Аудио/видео снимање и репродукција |
| Metal | Нискoнивоска графика и GPGPU израчунавања |
| Core ML | Машинско учење на уређају са on-device закључивањем |
| PushKit / UserNotifications | Push обавештења, VoIP, ажурирање садржаја |
Core Data — фрејмворк за управљање објектним моделом података. Омогућава чување, учитавање и синхронизацију објеката између UI нити и позадинских контекста. У iOS 17 додат је SwiftData — савремени омотач око Core Data са подршком за Swift Macros.
Избор између UIKit-а и SwiftUI-ја — кључна архитектонска одлука при покретању развоја iOS апликације. UIKit постоји од 2007. године и подржава све верзије iOS-а. SwiftUI је представљен 2019. године и захтева iOS 13+.
| Критеријум | UIKit | SwiftUI |
|---|---|---|
| Парадигма | Императивна (MVC, MVVM) | Декларативна (State-driven) |
| Минимални iOS | iOS 2.0+ | iOS 13.0+ |
| Дизајн | Auto Layout у коду или Interface Builder | Modifier chain, HStack/VStack/ZStack |
| Прилагођавање | Потпуно (CALayer, drawRect) | Ограничено модификаторима |
| Перформансе | Високе (ручна оптимизација) | Аутоматска инвалидација |
| Preview | Не подржава | Xcode Preview у реалном времену |
| Тестирање | XCTest + Snapshot тестови | XCTest + Preview тестови |
У пракси, већина комерцијалних пројеката користи хибридни приступ: SwiftUI за нове екране и једноставне форме, UIKit — за сложене прилагођене компоненте које захтевају фину контролу рендеровања. Apple активно инвестира у SwiftUI и очекује се да ће до 2028. године постати основни фрејмворк.
Свака iOS апликација пролази кроз пет стања којима управљају UIApplication и AppDelegate. У SwiftUI-ју ову улогу преузима App Protocol са @main атрибутом.
Not running — апликација није покренута или је систем зауставио. Inactive — апликација је у предњем плану, али не прима догађаје (нпр. током долазног позива). Active — нормално стање, апликација прима догађаје додира. Background — апликација је скувена, обавља позадинске задатке. Suspended — апликација је у меморији, али не извршава код.
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 — једина званична продавница апликација за iOS. Објављивање захтева претплату на Apple Developer Program ($99/год). Свака апликација пролази модерацију — аутоматску (статичка анализа бинарног кода) и ручну (провера интерфејса и садржаја).
Програмер креира архив у Xcode-у, отпрема преко Transporter-а или Xcode Organizer-а у App Store Connect. Просечно време модерације — 24–48 сати. App Review проверава усклађеност са смерницама: безбедност података, перформансе, HIG дизајн, одсуство скривене функционалности.
Посебна пажња се посвећује приватности: сви типови прикупљања података морају бити декларисани у Privacy Manifest-у. Од 2025. године Apple захтева навођење разлога коришћења API-ја (NSPrivacyAccessedAPITypes). Апликацијама које користе тракере без сагласности корисника одбија се објављивање.
| Захтев | Опис |
|---|---|
| Privacy Manifest | Декларација свих прикупљених података и циљева прикупљања |
| HIG Compliance | Усклађеност са Human Interface Guidelines компаније Apple |
| Stability | Одсуство падова у фази модерације |
| Sandbox Rules | Приступ само дозвољеним ресурсима |
| iCloud Entitlements | Исправна конфигурација iCloud Container-а |
Често постављана питања
Основни језик — Swift. Objective-C је такође подржан, али се углавном користи у наслеђеним пројектима. Swift је модеран типно-безбедан језик који је Apple представио 2014. године. Од 2020. Apple препоручује Swift као једини језик за нове пројекте.
UIKit — зрео фрејмворк са максималним прилагођавањем, погодан за сложене интерфејсе. SwiftUI — декларативни фрејмворк за iOS 13+, који убрзава развој 2–3 пута. Већина пројеката користи оба приступа кроз UIViewRepresentable и UIHostingController.
Годишња претплата на Apple Developer Program кошта $99 за појединачне програмере и $299 за организације. Без претплате објављивање није могуће. Провизија App Store-а износи 15–30% од продаје у зависности од годишњег прихода програмера.
SwiftUI је доступан од iOS 13 (2019). Међутим, за коришћење свих могућности, укључујући NavigationStack, Observable Macro и SwiftData, потребни су iOS 17 и Xcode 15. Подршка за старије верзије ограничава функционалност SwiftUI-ја.
App Sandbox — модел безбедности који ограничава приступ апликације фајл систему, подацима других апликација и системским ресурсима. Свака апликација ради у изолованом контејнеру. Приступ контактима, фотографијама, микрофону захтева изричиту дозволу кроз системски дијалог.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође