Junior
Mi a különbség az osztályok és a struktúrák között a Swift programozási nyelvben?
sobes.tech MI
Válasz az MI-től
Az osztályok referencia típusok, a szerkezetek érték típusok.
Fő különbségek:
- Öröklődés: Az osztályok támogatják az öröklődést, a szerkezetek nem.
- Típus átalakítás: Lehetővé teszi az osztály példány típusának futás közbeni ellenőrzését és értelmezését.
- Deinitialization: Az osztályok rendelkeznek
deinitdestruktorokkal az erőforrások felszabadítására, a szerkezetek nem. - Referencia számlálás: Az osztályok automatikus referencia számlálást (ARC) használnak a memória kezelésére. A szerkezetek másolódnak átadás vagy hozzárendelés során (kép-on-írhatás alkalmazható az optimalizáció érdekében).
- Mutating metódusok: A szerkezet vagy enum példányának tulajdonságait módosító metódusokat
mutatingkulcsszóval kell ellátni. Osztályok esetében ez nem szükséges.
Példa létrehozásra:
// Szerkezet
struct Point {
var x: Int
var y: Int
}
// Osztály
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Viselkedés példája hozzárendeléskor:
// Szerkezet
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Másolat készül
point2.x = 10
print(point1.x) // Kimenet: 1
// Osztály
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Hivatkozás
circle2.radius = 10.0
print(circle1.radius) // Kimenet: 10.0