„Swift (programozási nyelv)” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
BinBot (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
41. sor:
A Swift automatikus memóriakezelést használ, amely azonban nem a legtöbb hasonló nyelvben megszokott referenciakövető szemétgyűjtés (tracing garbage collection). Az Objective-C objektumokhoz hasonlóan a dinamikusan allokált Swift objektumok is automatikus [[Szemétgyűjtés#Referenciaszámlálás|referenciaszámlálásnak]] (ARC) vannak alávetve.<ref>[https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html Apple – Automatic Reference Counting]</ref> A körkörös referenciák megszakítása a programozó feladata, amelyhez a nyelv beépített támogatást nyújt gyenge referenciák formájában. A gyakori referenciaszámlálás által okozott teljesítmény- és sebességproblémák kiküszöbölésére a Swift fordítóprogram tartalmaz egy ARC optimalizációs lépést.
 
Memóriakezelés tekintetében, a magas szemantikai szinten, a Swift megkülönböztet érték- és referenciatípusokat. Az értéktípusok az elvárt módon működnek: értékadásukkor, paraméterként való átvételükkör mély szemantikai másolat készül róluk. A referenciatípusok nem a C++ nyelv referenciáinak felelnek meg, sokkal inkább hasonlítanak pointerekre, amint azt például a C# vagy Java nyelvekben tapasztalhatjuk. A referenciatípusú példányokra hivatkozó változóknak való értékadás tehéttehát magát a mutatott értéket nem, csupán a referencia "kötését" változtatja meg, míg az adattagok (példányváltozók) és tulajdonságok referencián keresztüli, indirekt módosítása magában a mutatott objektumban idéz elő változást.
 
Egy Swift programban az értékeket a fordítóprogram allokálja vagy automatikus, scope-hoz rendelt, fordítási időben ismert élettartammal (pongyola kifejezéssel élve [[Verem (adatszerkezet)#Hardveres verem|"a stack-en"]]), vagy dinamikusan, fordítási időben nem ismert élettartammal ("a freestore-on" avagy "a heap-en"). Az allokáció helye és milyensége az implementáció belső, rejtett sajátsága, amelyet az érték használati helye és kontextusa (pl. szerepel-e egy lezárt szabad változói között), valamint a különböző magas szintű optimalizációk és a statikus analízis hatékonysága is befolyásolhat.