शुद्ध Swift में प्रोटोकॉल पर कमजोर संदर्भ कैसे बनाएं (@objc के बिना)
सभी को नमस्कार! मैं Swift सीख रहा हूँ और delegate पैटर्न लागू करने की कोशिश कर रहा हूँ, लेकिन मेमोरी लीक की समस्या का सामना करना पड़ा। मेरे पास एक प्रोटोकॉल है:
```swift
protocol MyDelegate: class {
func didSomething()
}
class MyClass {
var delegate: MyDelegate?
func doSomething() {
delegate?.didSomething()
}
}
```
मुझे पता है कि Objective-C में `@objc` से चिह्नित प्रोटोकॉल के लिए `weak` का उपयोग किया जा सकता था। लेकिन मैं शुद्ध Swift में लिखना चाहता हूँ। जब मैं ऐसा करने की कोशिश करता हूँ:
```swift
weak var delegate: MyDelegate?
```
कंपाइलर त्रुटि देता है: `'weak' may only be applied to class and class-bound protocol types`। मैंने पढ़ा है कि प्रोटोकॉल को `AnyObject` से इनहेरिट करना होगा या प्रोटोकॉल परिभाषा में `class` का उपयोग करना होगा। लेकिन मैं पूरी तरह से नहीं समझता कि यह कैसे काम करता है और इसमें क्या अंतर है।
मेरा मुख्य प्रश्न: प्रोटोकॉल को सही तरीके से कैसे घोषित करें ताकि delegate प्रॉपर्टी के लिए `weak` का उपयोग किया जा सके और retain cycle से बचा जा सके? मैं चाहता हूँ कि delegate किसी भी प्रकार का हो सके (क्लास