Swift: nədir, sintaksisi və dilin əsas anlayışları

Müəllif: IT Sectr Dərc olunub: 2026-02-09 Oxuma vaxtı: 8 dəq

Swift — Apple şirkətinin müasir proqramlaşdırma dili, WWDC 2014-də Objective-C-nin əvəzi kimi təqdim edilmişdir. Swift təhlükəsiz tipləşdirmə, ARC (Automatic Reference Counting) avtomatik yaddaş idarəetməsi və protokol-yönümlü yanaşmanı birləşdirir. Swift Programming Language — sintaksis və standart kitabxana haqqında əsas mənbə.

Əsas məqamlar

  • Swift — type inference, Optionals və Protocol-Oriented Programming ilə statik tipli dil
  • Optionals — Optional Binding (if let) və Optional Chaining (?.) vasitəsilə nil ilə təhlükəsiz iş
  • ARC — əl ilə retain/release olmadan yaddaşı idarə etmək üçün avtomatik referans sayma
  • Closures — kontekst ələ keçirmə ilə anonim funksiyalar, callback-API və funksional zəncirlərdə istifadə olunur
  • Struct vs Class — təyinat və miras almada fərqli davranışa malik value-tiplər vs reference-tiplər

Swift nədir?

Swift — Apple tərəfindən iOS, macOS, watchOS, tvOS və visionOS üçün hazırlanmış multiparadiqmalı proqramlaşdırma dilidir. Dilin əsas məqsədləri: təhlükəsizlik, sürət və sintaksisin ifadəliliyi. Swift LLVM kompilyatorundan istifadə edir və performans baxımından C++ ilə müqayisə oluna bilən optimallaşdırılmış maşın kodu yaradır.

2014-cü ildə buraxılışından bəri Swift 6 əsas versiyadan keçmişdir. Swift 6 (2024) konkurent kodun izolyasiyasına ciddi nəzarət vasitəsilə tam data-race safety modelini təqdim etmişdir. GitHub Octoverse 2025 məlumatlarına görə, Swift icma artımına görə ilk 10 dil arasındadır və Apple platformalarında qəbul sürətinə görə Rust və Kotlini qabaqlayır.

Swift açıq və kross-platformalıdır — mənbə kodu GitHub-da dərc edilmişdir (Swift Open Source). Apple platformaları ilə yanaşı, Swift server inkişafı üçün Linux və Windows-da (Vapor, Hummingbird) istifadə olunur, baxmayaraq ki, əsas tətbiq sahəsi Apple ekosistemində mobil və desktop tətbiqlərinin hazırlanmasıdır.

Nə üçün Swift Objective-C-ni əvəz etdi

Keçidin əsas səbəbləri: Swift Objective-C-də mümkün olan bütün səhv siniflərini aradan qaldırır. Type safety kompilyasiya mərhələsində tip uyğunsuzluğunun qarşısını alır. Optionals nil-ə istinadları istisna edir. ARC ilk gündən daxil edilmişdir, Objective-C-dəki MRC/ARC-dən fərqli olaraq. Swift-in sintaksisi daha qısa və oxunaqlıdır — tədqiqatlar oxşar tapşırıqların həllində Objective-C ilə müqayisədə kodun həcmində 30-40% azalma göstərir.

Sintaksis və əsas konstruksiyalar

Əsas Swift sintaksisi tanış C-oxşar konstruksiyaları funksional dillərin elementləri ilə birləşdirir. Dəyişənlər var, sabitlər isə let vasitəsilə elan edilir. Kompilyator type inference istifadə edir, buna görə də tipin açıq göstərilməsi yalnız qeyri-müəyyənlik olduqda tələb olunur.

swift
import Foundation

// Sabitlər və dəyişənlər
let name = "Swift"
var version = 6.0
var count: Int = 42

// Standart parametrləri olan funksiyalar
func greet(person: String, greeting: String = "Hello") -> String {
    return "\(greeting), \(person)!"
}

// Erkən çıxış üçün Guard-let
func parse(input: String?) -> Int {
    guard let value = input, let number = Int(value) else {
        return 0
    }
    return number
}

Switch və pattern matching Swift-də C və Kotlin-dən daha güclüdür. Switch kortejlər, aralıqlar, where şərtləri və dəyər bağlama ilə uyğunlaşdırmanı dəstəkləyir. Kompilyator bütün case-lərin əhatəli əhatəsini yoxlayır — default-un olmaması xəta deyil, əgər bütün mümkün dəyərlər əhatə olunubsa.

swift
let point = (x: 3, y: -1)

switch point {
case (0, 0):
    print("Başlanğıc nöqtəsi")
case let (x, y) where x == y:
    print("X Y-ə bərabərdir")
case let (x, y) where abs(y) > x:
    print("Y modul üzrə X-dən böyükdür")
default:
    print("Nöqtə (\("point.x), \(point.y))")
}

Optionals və nil ilə təhlükəsiz iş

Optionals — tip sistem səviyyəsində null-istinad problemini həll edən Swift-in mərkəzi konsepsiyasıdır. Optional<Wrapped> — iki case-li enum: .none (nil) və .some(Wrapped). Kompilyator Optional-in açıq yoxlama olmadan istifadəsini qadağan edir, bu da bütöv bir runtime xəta sinfini istisna edir.

swift
var optionalString: String? = "Hello"
optionalString = nil  // icazə verilir

// Optional Binding — təhlükəsiz çıxarma
if let text = optionalString {
    print("Mətn: (\("text)")
} else {
    print("Dəyər yoxdur")
}

// Optional Chaining — xüsusiyyətlərə təhlükəsiz giriş
let length = optionalString?.count ?? 0

// Nil-coalescing operatoru
let greeting = optionalString ?? "Default"

Optional Chaining ?. operatoru ilə metodları təhlükəsiz çağırmağa və opsional dəyərin xüsusiyyətlərinə daxil olmağa imkan verir. Əgər zəncir nil ilə kəsilərsə, bütün ifadənin nəticəsi nil olur. Nil-coalescing (??) standart dəyər təmin edir və placeholder mətni göstərmək üçün UI kodunda geniş istifadə olunur.

Protokollar və genişləndirmələr

Protocols Swift-də kontrakt — xüsusiyyətlər və metodlar toplusunu təyin edir. Java interfeyslərindən fərqli olaraq, Swift protokolları protocol extensions vasitəsilə standart tətbiqlərə malik ola bilər. Bu, sinif miras alması əvəzinə Apple tərəfindən tövsiyə edilən Protocol-Oriented Programming-in əsasıdır.

swift
protocol NamedEntity {
    var name: String { get }
    func description() -> String
}

// Extension vasitəsilə standart tətbiq
extension NamedEntity {
    func description() -> String {
        return "Entity: \(name)"
    }
}

// Extension vasitəsilə konformizm
extension String: NamedEntity {
    var name: String { return self }
}

Protocol Extensions hər uyğun tipi dəyişmədən protokola metodlar əlavə etməyə imkan verir. Bu, ümumi utilitlər əlavə etmək üçün xüsusilə faydalıdır: Sequence üçün map, filter, reduce və ya JSON seriyalaşdırma üçün Codable. Apple bir çox freymvorkları (SwiftUI, Combine) genişləndirmələri olan protokollar üzərində qurmuşdur.

Closures və funksional zəncirlər

Closures Swift-də — xarici kontekstdən dəyişənləri ələ keçirən anonim funksiyalar. Sintaksis baxımından closures Kotlin-dəki lambdalara bənzəyir, lakin daha çevik sintaksisə malikdir: trailing closure, shorthand argument names ($0, $1) və autoclosures.

swift
// Kontekst ələ keçirmə ilə closure
let numbers = [5, 3, 8, 1, 9]

// Trailing closure syntax
let sorted = numbers.sorted { $0 < $1 }

// Funksional zəncir
let result = numbers
    .filter { $0 > 3 }
    .map { $0 * 2 }
    .reduce(0, +)

// Funksiya parametri kimi closure
func performAsync(completion: @escaping (Result<Data, Error>) -> Void) { }

@escaping closures — closure funksiyadan qayıtdıqdan sonra icra olunduqda istifadə olunur, tipik olaraq şəbəkə sorğuları və asinxron əməliyyatlar üçün. @autoclosure ifadəni avtomatik olaraq closure-a bükür, bu assert və short-circuit məntiqində istifadə olunur.

Strukturlar və siniflər: müqayisə

struct və class arasında seçim — Swift modelinin layihələndirilməsində ilk qərarlardan biridir. Apple standart olaraq struct (value-tip) istifadə etməyi və yalnız miras alma və ya referansla identifikasiya zərurəti olduqda class (reference-tip) keçməyi tövsiyə edir.

XarakteristikaStructClass
Ötürmə üsuluDəyərlə (kopiya)Referansla
Miras almaDəstəklənmirDəstəklənir
ARC idarəetməsiTələb olunmurARC (referans sayğacı)
Deinit deinitiatoruYoxBəli
DəyişkənlikXüsusiyyətləri dəyişmək üçün mutating funcİstənilən metod dəyişə bilər
Kolleksiyalarda saxlanmaDaxil edildikdə kopyalanırReferans saxlanılır

Value-tiplər (struct) çoxiplikli mühitdə daha təhlükəsizdir — hər bir axın müstəqil kopiya alır. Reference-tiplər (class) UIKit (UIView, UIViewController) ilə iş üçün zəruridir, burada referans eyniliyi və sistem siniflərindən miras alma tələb olunur.

ARC yaddaş idarəetməsi

ARC (Automatic Reference Counting) — reference-tiplər üçün Swift yaddaş idarəetmə sistemidir. Kompilyator runtime-da retain/release əməliyyatlarını yerləşdirir, obyektə güclü istinadların sayını izləyir. Sayğac sıfıra çatdıqda, obyekt dərhal azad edilir.

ARC-nin əsas problemi — retain cycles (siklik istinadlar). İki obyekt bir-birinə güclü istinadlar saxladıqda, yaddaş azad edilmir. Həll yolu — weak istinadlar (azad edildikdə avtomatik nil olur) və unowned istinadlar (obyektin canlı olduğunu təmin edir).

swift
class ProfileViewController: UIViewController {
    var onLogout: (() -> Void)?
    
    func setupHandler() {
        // [weak self] retain cycle-in qarşısını alır
        onLogout = { [weak self] in
            guard let self else { return }
            self.dismiss(animated: true)
        }
    }
}

Closures-da retain cycles qarşısını almaq üçün [weak self] istifadə edin guard let self = self else { return } ilə. Bu qayda xüsusilə UIKit-də vacibdir, burada ViewController öz xüsusiyyətlərinə güclü istinadlar saxlayır və bu xüsusiyyətlərin daxilindəki closures ViewController-a istinad edir.

Tez-tez verilən suallar

Swift-də hansı məlumat tipləri var?

Swift Int, Double, Float, String, Bool, Array, Set, Dictionary və kortejləri (tuples) dəstəkləyir. Say tipləri sabit ölçüyə malikdir: Int8, Int16, Int32, Int64 və işarəsiz UInt. Tarixlərlə iş üçün Foundation-dan Date, məlumatlar üçün Data istifadə olunur.

Swift-də Optional nədir və nə üçün lazımdır?

Optional — iki case-li enum: .none (nil).some(Wrapped). Swift if let, guard let və ya ?? vasitəsilə Optional-in açıq yoxlanılmasını tələb edir, bu da NullPointerException-u istisna edir. Opsional zəncirlər (?.) iç-içə opsional dəyərlərin xüsusiyyətlərinə təhlükəsiz daxil olmağa imkan verir.

Swift-də struct class-dan nə ilə fərqlənir?

Struct — value-tip, təyin edildikdə kopyalanır, miras almanı dəstəkləmir, ARC tələb etmir. Class — reference-tip, referansla ötürülür, miras almanı və deinitiatorları dəstəkləyir. Apple standart tip olaraq struct tövsiyə edir.

Swift-də ARC yaddaş idarəetməsi necə işləyir?

ARC sinif obyektlərinə güclü istinadları avtomatik sayır. Sayğac sıfırlandıqda yaddaş azad edilir. Siklik istinadların qarşısını almaq üçün weak (avtomatik nil) və unowned (təmin edilmiş ömür) istifadə edin. ARC struct və enum-a tətbiq edilmir.

Swift-də Protocol Oriented Programming nədir?

Protocol-Oriented Programming — sinif iyerarxiyası əvəzinə genişləndirmələri olan protokollardan istifadə edən yanaşmadır. Protokollar protocol extensions vasitəsilə metodların standart tətbiqlərini ehtiva edə bilər. Bu, miras alma olmadan kodun təkrar istifadəsinə imkan verir, çevikliyi və test edilə bilənliyi qoruyur.

Nəticə

  • Swift — iOS/macOS inkişafı üçün Optionals, ARC və Protocol-Oriented Programming ilə Apple-ın statik tipli dili
  • Optionals — Optional Binding, Optional Chaining və nil-coalescing operatoru ilə nil ilə təhlükəsiz iş
  • Protocols + Extensions — standart metod tətbiqləri və kompozisiya ilə Protocol-Oriented Programming-in əsası
  • Closures — kontekst ələ keçirmə, trailing syntax və yaddaş idarəetməsi üçün capture listləri olan anonim funksiyalar
  • Struct vs Class — value-tiplər (kopyalama, axın təhlükəsizliyi) vs reference-tiplər (miras alma, ARC)
  • ARC — retain cycles qarşısını almaq üçün weak/unowned modifikatorları ilə avtomatik referans sayma
  • Switch və pattern matching — kortejlər, aralıqlar və where şərtləri ilə əhatəli uyğunlaşdırma

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun