Middle
Ինչպե՞ս կարելի է պահել դասի օբյեկտները զանգվածում ուժեղ հղումով։
sobes.tech AI
Պատասխան AI-ից
Կլասի օբյեկտները զանգվածում պահվում են ուժեղ հղումներով՝ ըստ նախնական կարգավորման, եթե զանգվածը պարունակում է դասի տիպի տարրեր: [MyClass] կամ Array<MyClass> զանգվածը կպահպանի ուժեղ հղումներ MyClass օրինակների վրա:
Օրինակ՝
class MyClass {
let id: Int
init(id: Int) {
self.id = id
print("MyClass \(id) ստեղծվեց")
}
deinit {
print("MyClass \(id) ազատվեց")
}
}
var ուժեղՀղումներԶանգված: [MyClass] = []
for i in 0..<3 {
let obj = MyClass(id: i)
ուժեղՀղումներԶանգված.append(obj) // Զանգվածը պահպանում է ուժեղ հղումներ
}
print("Զանգվածը ունի \(ուժեղՀղումներԶանգված.count) տարրեր")
// Օբյեկտները չեն ազատվի այնքան ժամանակ, քանի դեռ գոյություն ունեն ուժեղ հղումներ զանգվածում
// `nil` նշանակելով զանգվածին կամ տարրեր հեռացնելով, եթե այլ ուժեղ հղումներ չկան, տեղի կունենա ազատում:
// ուժեղՀղումներԶանգված = [] // Բոլոր ուժեղ հղումների ազատման օրինակ
// ուժեղՀղումներԶանգված.remove(at: 0) // Մի ուժեղ հղում ազատելու օրինակ
Swift-ում, արժեքային տիպերի (struct) կամ enum-ների (enum) զանգվածները պահում են իրենց տարրերի պատճենները: Սակայն, եթե զանգվածը պարունակում է դասի օրինակներ (class), այն պահում է այդ օրինակների ուժեղ հղումները: