Middle
როგორ შეიძლება შექმნათ სუსტი მიმაგრება Swift-ში პროტოკოლის ტიპის ცვლადზე?
sobes.tech AI
პასუხი AI-სგან
პროტოკოლის ტიპის ცვლადის გამოცხადების წინ საჭიროა გამოიყენოთ საკვანძო სიტყვა weak. პროტოკოლი უნდა იყოს გამოცხადებული ისე, რომ მას შეუძლია განკუთვნილი იყოს მხოლოდ კლასებზე: ან მემკვიდრეობით AnyObject-დან, ან გამოყენებით საკვანძო სიტყვა class.
მაგალითი AnyObject-დან მემკვიდრეობით:
protocol MyDelegate: AnyObject {
func doSomething()
}
class MyClass {
weak var delegate: MyDelegate?
}
მაგალითი class საკვანძო სიტყვით:
protocol AnotherDelegate: class { // ვარიანტი Swift 4.1-მდე
func doSomethingElse()
}
// თანამედროვე Swift ვერსიებში (>= 4.1) საკმარისია მემკვიდრეობა `AnyObject`-დან
weak გამოყენება თავიდან აცილებს ციკლურ ძლიერი მითითებებს, მაგალითად დელეგირების დროს, სადაც მფლობელი ობიექტი მიმართავს დელეგატს, და დელეგატი უკან მიმართავს მფლობელს (ან მსგავს სტრუქტურას). სუსტი მითითება არ ზრდის ობიექტის მითითებების გამთვლელს.