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