Sobes.tech
Junior

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

sobes.tech Süni İntellekt

AI-dan cavab

  • Xüsusiyyətlər (Properties):
    • İnitilayzasiya zamanı (initializer injection).
    • İnitilayzasiya sonrası təyin etmə.
    class ViewController: UIViewController {  
        var data: String? // Məlumatların ötürülməsi üçün xüsusiyyət  
    }  
    
  • Delegatlar (Delegation):
    • Hadisələr və məlumatların ötürülməsi üçün metodlar olan protokol.
    protocol DataDelegate: AnyObject {  
        func didReceiveData(data: String)  
    }  
    
    class SenderViewController: UIViewController {  
        weak var delegate: DataDelegate?  
    
        func sendData() {  
            delegate?.didReceiveData(data: "Sender-dən salam")  
        }  
    }  
    
    class ReceiverViewController: UIViewController, DataDelegate {  
        func didReceiveData(data: String) {  
            print("Qəbul edilən məlumat: \(data)")  
        }  
    }  
    
  • Bağlamalar (Closures) / Callbacks:
    • Başqa yerdə çağırılacaq funksiyanı ötürmək.
    class SenderViewController: UIViewController {  
        var completionHandler: ((String) -> Void)?  
    
        func sendData() {  
            completionHandler?("Bağlamadan məlumat")  
        }  
    }  
    
  • NotificationCenter:
    • Yayım və abunəlik mexanizmi üçün broadcast bildirişləri.
    // Sender  
    NotificationCenter.default.post(name: NSNotification.Name("DataNotification"), object: nil, userInfo: ["data": "Notification-dan məlumat"])  
    
    // Receiver  
    NotificationCenter.default.addObserver(self, selector: #selector(didReceiveNotification(_:)), name: NSNotification.Name("DataNotification"), object: nil)  
    
    @objc func didReceiveNotification(_ notification: Notification) {  
        if let data = notification.userInfo?["data"] as? String {  
            print("Qəbul edilən bildiriş məlumatı: \(data)")  
        }  
    }  
    
  • Singleton / Paylaşılan Nümunə:
    • Yeganə nümunə olan sinif, qlobal olaraq əlçatandır.
    class DataManager {  
        static let shared = DataManager()  
        var sharedData: String?  
        private init() {} // Digər nümunələrin yaradılmasını qadağan edir  
    }  
    
    // İstifadə  
    DataManager.shared.sharedData = "Singleton-dən məlumat"  
    print(DataManager.shared.sharedData)  
    
  • Açar-Dəyər Nəzarəti (KVO):
    • Obje xüsusiyyətlərinin dəyişikliklərini izləmək üçün mexanizm.
    class MyObservableObject: NSObject {  
        @objc dynamic var value: String = "" // Xüsusiyyət `@objc dynamic` olmalıdır  
    }  
    
    class Observer: NSObject {  
        var observation: NSKeyValueObservation?  
    
        func startObserving(object: MyObservableObject) {  
            observation = object.observe(\.value, options: [.new]) { observedObject, change in  
                if let newValue = change.newValue {  
                    print("Dəyər dəyişdi: \(newValue)")  
                }  
            }  
        }  
    }  
    
  • Core Data / Realm / Digər verilənlər bazaları:
    • Məlumatların davamlı saxlanması və controllerlər və ekranlar arasında məlumat mübadiləsi üçün.
  • Mediator Pattern:
    • Digər obyektlər arasında qarşılıqlı əlaqəni idarə edən obyekt.
  • Reaktiv Programlama ilə Binding (RxSwift, Combine):
    • Məlumatların axınlar (streams) və ya publisherlər vasitəsilə ötürülməsi.
    // Combine nümunəsi  
    import Combine  
    
    let publisher = PassthroughSubject<String, Never>()  
    
    // Abunəçi  
    let subscriber = publisher.sink { receivedValue in  
        print("Combine vasitəsilə alınan dəyər: \(receivedValue)")  
    }  
    
    // Göndərən  
    publisher.send("Combine-dən məlumat")  
    
  • İstifadəçi Parametrləri:
    • Kiçik miqdarda sadə məlumatların qlobal olaraq saxlanması üçün.
    UserDefaults.standard.set("İstifadəçi adı", forKey: "userName")  
    let userName = UserDefaults.standard.string(forKey: "userName")  
    
  • Ətraf mühit obyektləri (Environment Objects) in SwiftUI:
    • SwiftUI-də görünüşlər arasında asılılıqları aşağıya doğru ötürmək üçün.
    import SwiftUI  
    
    class AppData: ObservableObject {  
        @Published var message: String = "İlkin mesaj"  
    }  
    
    struct ContentView: View {  
        @EnvironmentObject var appData: AppData  
    
        var body: some View {  
            Text(appData.message)  
        }  
    }