„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
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
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.
|