Sobes.tech
Junior

Hansı məlumat ötürmə üsullarını bilirsiniz?

sobes.tech Süni İntellekt

AI-dan cavab

  • Xüsusiyyətlər və İnitilayzerlər: Ob'ekt yaradarkən xüsusiyyətlər və initilayzerlər vasitəsilə məlumatların ötürülməsi.
  • Segues (Storyboardlar üçün): prepare(for:sender:) istifadə edərək View Controllerlar arasında naviqasiya zamanı məlumatların ötürülməsi.
  • Delegation: Bir obyektin (delegatın) başqa bir obyektdən bildiriş və məlumatlar almasını təmin edən protokolun tətbiqi.
  • NotificationCenter: Hər hansı məlumatla yayım-abunə mexanizmi ilə bildirişlərin yayılması.
  • Key-Value Observing (KVO): Obyektlərin xüsusiyyətlərindəki dəyişiklikləri izləmək mexanizmi.
  • Closures/Callbacks: Asinxron və ya müəyyən hadisədən sonra işləyən bağlamalar vasitəsilə məlumatların ötürülməsi.
  • Singletons: Tətbiqin hər yerindən əlçatan ümumi sinif nümunəsi, məlumatların saxlanması və mübadiləsi üçün.
  • User Defaults: İstifadəçi haqqında kiçik həcmli məlumatların daimi yaddaşa saxlanması.
  • Core Data/Realm/SQLite: Cihazda strukturlaşdırılmış məlumatların saxlanması və idarə olunması.
  • File Storage: Məlumatların diskdə fayllara saxlanması (məsələn, sənədlər, şəkillər).
  • CloudKit: iCloud cihazları arasında məlumatların saxlanması və sinxronizasiyası üçün bulud xidməti.
  • Networking (APIs): Şəbəkə vasitəsilə tətbiq və server arasında məlumatların ötürülməsi.
  • Environment Objects (SwiftUI): Görünüşlər hierarhiyasında paylaşılmış obyektlərin təminatı.
  • State Objects (SwiftUI): Görünüşün yerli vəziyyətinin idarə olunması.
  • Observed Objects (SwiftUI): Görünüşə abunə olan obyektlərin idarə olunması.

Segues istifadəsinin nümunəsi:

// Mənbə View Controller-də
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.dataToReceive = "Salam mənbədən"
        }
    }
}

Delegation istifadəsinin nümunəsi:

// Delegat protokolu
protocol DataDelegate: AnyObject {
    func didReceiveData(_ data: String)
}

// Məlumat göndərən sinif
class SendingViewController: UIViewController {
    weak var delegate: DataDelegate?

    func sendData() {
        delegate?.didReceiveData("Delegat vasitəsilə göndərilən məlumat")
    }
}

// Məlumat alan sinif
class ReceivingViewController: UIViewController, DataDelegate {
    func didReceiveData(_ data: String) {
        print("Qəbul edilən məlumat: \(data)")
    }
}

NotificationCenter istifadəsinin nümunəsi:

// Bildiriş göndərilməsi
NotificationCenter.default.post(name: Notification.Name("myDataNotification"), object: nil, userInfo: ["dataKey": "NotificationCenter-dən məlumat"])

// Bildirişin alınması
NotificationCenter.default.addObserver(self, selector: #selector(handleDataNotification(_:)), name: Notification.Name("myDataNotification"), object: nil)

@objc func handleDataNotification(_ notification: Notification) {
    if let receivedData = notification.userInfo?["dataKey"] as? String {
        print("Qəbul edilən məlumat: \(receivedData)")
    }
}

// Nəzərə alın ki, müşahidəçini silmək unudulmasın
deinit {
    NotificationCenter.default.removeObserver(self)
}