Sobes.tech
Junior — Middle

Оё метавонед консепти Retain дар Objective-C ва чӣ гуна таъсир расондан ба хотираро шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Дар Objective-C, усул retain барои идора кардани вақти зиндагии объект дар модели ҳисоб кардани истинодҳо (reference counting) истифода мешавад. Вақте ки шумо retain-ро дар объект даъват мекунед, шумораи истинодҳоро ба 1 меафзояд, ки маънои онро дорад, ки шумо масъул ҳастед, ки онро дар ёддошт нигоҳ доред.

Ин ба ёддошт таъсир мерасонад: объект то он даме, ки шумораи истинодҳо ба сифр нарасад, аз ёддошт хориҷ намешавад. Барои озод кардани объект, бояд release-ро даъват кунед, ки шумораи онро кам мекунад. Вақте ки шумора ба сифр мерасад, объект деаллокатсия мешавад.

Масалан:

NSObject *obj = [[NSObject alloc] init]; // шумора = 1
[obj retain]; // шумора = 2
[obj release]; // шумора = 1
[obj release]; // шумора = 0, объект хориҷ шуд

Ин гуна, retain кӯмак мекунад, ки вақти зиндагии объектҳоро назорат кунед ва пешгирӣ аз хориҷи барвақтӣ, аммо истифодаи нодуруст метавонад ба дарзмолшавии ёддошт оварда расонад.