Junior — Middle
Ինչպե՞ս կարելի է իրականացնել օբյեկտի ավելացումը զանգվածում այնպես, որ դա չառաջացնի նրա ուժեղ հղումների քանակի ավելացում։
sobes.tech AI
Պատասխան AI-ից
Որպեսզի ավելացնեք օբյեկտը զանգվածում առանց դրա վրա ուժեղ հղումների քանակը ավելացնելու, կարող եք օգտագործել թույլ հղումների զանգված: iOS-ում դա հաճախ կատարվում է NSPointerArray-ի միջոցով թույլ հղումների ընտրանքով կամ օբյեկտները թեթև կոնտեյներով պատելիս:
NSPointerArray-ով օրինակ:
let weakArray = NSPointerArray.weakObjects()
class MyObject {}
var obj = MyObject()
weakArray.addPointer(Unmanaged.passUnretained(obj).toOpaque())
// Այժմ, weakArray-ը պարունակում է թույլ հղում obj-ին, առանց ուժեղ հղումների հաշվիչը ավելացնելու
Այս կերպ, զանգվածի օբյեկտները չեն պահվում ուժեղ, և երբ օբյեկտը ազատվում է, հղումը ավտոմատ կերպով դառնում է nil:
Եթե օգտագործում եք սովորական [MyObject] զանգված, ապա ավելացնելով օբյեկտը, դա կբարձրացնի ուժեղ հղումների հաշվիչը, ինչը այս առաջադրանքի համար անպատշաճ է։