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