Avatar ·

क्या Swift में क्लोजर में हमेशा [unowned self] का उपयोग करना चाहिए?

सभी को नमस्ते! मैं एक शुरुआती iOS डेवलपर हूँ, और क्लोजर में retain cycles को समझ नहीं पा रहा हूँ। यहाँ एक सरल उदाहरण है: मैं कंट्रोलर के अंदर एक नेटवर्क request कर रहा हूँ। ```swift class ProfileViewController: UIViewController { var nameLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() fetchUserProfile() } func fetchUserProfile() { APIClient.shared.getUserProfile { [weak self] profile in self?.nameLabel.text = profile.name } } } ``` मैं देखता हूँ कि कई लोग `[weak self]` का उपयोग करते हैं, लेकिन कुछ `[unowned self]` लिखते हैं। क्या अंतर है? `unowned` का उपयोग कब करना चाहिए? या हमेशा `weak` का उपयोग करना बेहतर है? मैंने सुना है कि अगर object पहले ही dealloc हो चुका है तो `unowned` crash कर सकता है। लेकिन फिर इसकी आवश्यकता क्यों है? हो सकता है कि कुछ मामले हों जहाँ weak पर्याप्त न हो या असुविधाजनक हो? कृपया उदाहरणों के साथ समझाएँ: किन स्थितियों में unowned सुरक्षित है, और किनमें नहीं। और