iOS platformasında avtomatik yaddaş idarəetməsində (ARC) retain və release-i açıq şəkildə istifadə etmək lazım olan vəziyyətlər hansılardır?
sobes.tech Süni İntellekt
AI-dan cavab
ARC (Avtomatik Referans Sayımı) ilə iOS mühitində, inkişaf etdirici adətən retain və release-i əl ilə idarə etmir — bunu tərtibçi edir. Ancaq, nadir hallarda, bu metodların açıq istifadəsi lazım ola bilər:
-
Objective-C-də aşağı səviyyəli API-lərlə qarşılıqlı əlaqə, burada ARC obyektin həyat dövrünü düzgün müəyyən edə bilməz, məsələn,
Core Foundationobyektləri istifadə edərkən, bunlar birbaşa ARC-ni dəstəkləmir. Bu halda, yaddaşıCFBridgingRetainvəCFBridgingReleaseilə əl ilə idarə etmək lazımdır. -
__bridge_retainedvə__bridge_transferistifadə edərək ARC və Core Foundation tipləri arasında konvertasiya zamanı Objective-C kodu yazarkən. -
Nadir hallarda, öz siniflərini qeyri-standart yaddaş idarəetməsi ilə həyata keçirərkən və ya güclü istinad döngələrindən (retain cycles) qaçarkən, adətən
weakvəunownedistifadə olunur.
Ümumiyyətlə, müasir ARC ilə işləyən tətbiqlərdə, retain və release-in əl ilə istifadəsi demək olar ki, lazım deyil və hətta tərtibçi tərəfindən qadağandır. Əgər ehtiyac yaranarsa, arxitekturanı yenidən gözdən keçirmək və ya Core Foundation üçün xüsusi körpülər istifadə etmək daha yaxşıdır.
Core Foundation ilə nümunə:
CFStringRef cfStr = CFStringCreateWithCString(NULL, "Hello", kCFStringEncodingUTF8);
NSString *nsStr = (__bridge_transfer NSString *)cfStr; // ARC idarə edəcək
// __bridge_transfer olmadan, CFRelease(cfStr) əl ilə çağırılmalı idi