Sobes.tech
Junior

რომელი მონაცემთა გადაცემის მეთოდებს იცნობ?

sobes.tech AI

პასუხი AI-სგან

  • സ്വഭാവഗുണങ്ങൾ (Properties):
    • ആരംഭത്തിൽ (initializer injection).
    • ആരംഭത്തിന് ശേഷം നൽകുക.
    class ViewController: UIViewController {  
        var data: String? // ഡാറ്റ പാസ്സുചെയ്യുന്നതിനുള്ള സ്വഭാവഗുണം  
    }  
    
  • ഡെലഗേറ്റുകൾ (Delegates):
    • ഇവന്റുകൾ അറിയാനും ഡാറ്റ കൈമാറാനും ഉപയോഗിക്കുന്ന പ്രോട്ടോകോൾ.
    protocol DataDelegate: AnyObject {  
        func didReceiveData(data: String)  
    }  
    
    class SenderViewController: UIViewController {  
        weak var delegate: DataDelegate?  
    
        func sendData() {  
            delegate?.didReceiveData(data: "Hello from Sender")  
        }  
    }  
    
    class ReceiverViewController: UIViewController, DataDelegate {  
        func didReceiveData(data: String) {  
            print("സ്വീകൃത ഡാറ്റ: \(data)")  
        }  
    }  
    
  • ക്ലോഷറുകൾ (Closures) / കോൾബാക്കുകൾ (Callbacks):
    • മറ്റൊരു സ്ഥലത്ത് വിളിക്കപ്പെടുന്ന ഫംഗ്ഷൻ നൽകുക.
    class SenderViewController: UIViewController {  
        var completionHandler: ((String) -> Void)?  
    
        func sendData() {  
            completionHandler?("Data via closure")  
        }  
    }  
    
  • NotificationCenter:
    • പ്രസിദ്ധീകരണവും സബ്സ്ക്രിപ്ഷനും ഉപയോഗിച്ച് സന്ദേശങ്ങൾ കൈമാറുക.
    // അയക്കൽ  
    NotificationCenter.default.post(name: NSNotification.Name("DataNotification"), object: nil, userInfo: ["data": "Data from Notification"])  
    
    // സ്വീകരണം  
    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("സ്വീകൃത സന്ദേശം: \(data)")  
        }  
    }  
    
  • സിംഗ്ലറ്റൺ / ഷെയർഡ് ഇൻസ്റ്റൻസ്:
    • ഗ്ലോബലായി ലഭ്യമാകുന്ന ഏക ഉദാഹരണം.
    class DataManager {  
        static let shared = DataManager()  
        var sharedData: String?  
        private init() {} // മറ്റൊരു ഉദാഹരണ നിർമ്മാണം നിരോധിക്കുന്നു  
    }  
    
    // ഉപയോഗം  
    DataManager.shared.sharedData = "Data from Singleton"  
    print(DataManager.shared.sharedData)  
    
  • കീ-വാല്യു നിരീക്ഷണം (KVO):
    • ഒബ്ജക്റ്റുകളുടെ സ്വഭാവഗുണങ്ങളിൽ മാറ്റങ്ങൾ നിരീക്ഷിക്കുന്ന സംവിധാനം.
    class MyObservableObject: NSObject {  
        @objc dynamic var value: String = "" // സ്വഭാവഗുണം `@objc dynamic` ആയിരിക്കണം  
    }  
    
    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("മാറ്റം വന്നത്: \(newValue)")  
                }  
            }  
        }  
    }  
    
  • Core Data / Realm / മറ്റ് ഡാറ്റാബേസുകൾ:
    • സ്ഥിരതയുള്ള സംഭരണം, നിയന്ത്രണങ്ങൾ, സ്ക്രീനുകൾക്കിടയിലെ ഡാറ്റാ കൈമാറ്റം.
  • മീഡിയേറ്റർ (Mediator Pattern):
    • മറ്റുള്ളവരുമായി ഇടപഴകുന്നത് നിയന്ത്രിക്കുന്ന ഒബ്ജക്റ്റ്.
  • Reactive Programming (RxSwift, Combine) ഉപയോഗിച്ച് ബൈൻഡിംഗ്:
    • ഡാറ്റാ പ്രവാഹങ്ങളിലൂടെ (streams) അല്ലെങ്കിൽ പബ്ലിഷറുകളിലൂടെ (publishers) ഡാറ്റ കൈമാറുക.
    // Combine ഉദാഹരണം  
    import Combine  
    
    let publisher = PassthroughSubject<String, Never>()  
    
    // സബ്സ്ക്രൈബർ  
    let subscriber = publisher.sink { receivedValue in  
        print("Combine വഴി ലഭിച്ച മൂല്യം: \(receivedValue)")  
    }  
    
    // അയക്കൽ  
    publisher.send("Data from Combine")  
    
  • ഉപയോക്തൃ ഡിഫോൾട്ടുകൾ (User Defaults):
    • ചെറിയ, ലളിതമായ ഡാറ്റാ സംഭരണത്തിനായി, ഗ്ലോബലായി ലഭ്യമാക്കുക.
    UserDefaults.standard.set("User Name", forKey: "userName")  
    let userName = UserDefaults.standard.string(forKey: "userName")  
    
  • SwiftUI-ൽ പരിസ്ഥിതി ഒബ്ജക്റ്റുകൾ (Environment Objects):
    • SwiftUI-ൽ കണക്ഷനുകൾ താഴേക്ക് നൽകുന്നതിനായി.
    import SwiftUI  
    
    class AppData: ObservableObject {  
        @Published var message: String = "Initial message"  
    }  
    
    struct ContentView: View {  
        @EnvironmentObject var appData: AppData  
    
        var body: some View {  
            Text(appData.message)  
        }  
    }