Kako se pristupa objektima klase i strukturama u Swift-u?
sobes.tech АИ
Одговор од АИ
Објекти класе (референтни типови):
Када се додели пример класе променљивој или константи, додељује се референца на исти пример. Промене направљене преко једне референце ће бити видљиве на свим референцама које указују на тај пример.
class MyClass {
var value: Int = 0
}
let object1 = MyClass() // Креирање примера
let object2 = object1 // object2 сада указује на исти пример
object1.value = 10 // Промена преко object1
print(object2.value) // Исписаће 10 - промена је видљива и преко object2
Структуре (тип по вредности):
Када се додели пример структуре променљивој или константи, креира се копија тог примера. Свакa променљива/константа садржи своју независну копију података. Промене у једној копији не утичу на друге.
struct MyStruct {
var value: Int = 0
}
var struct1 = MyStruct() // Креирање примера
var struct2 = struct1 // Копирање
struct1.value = 20 // Промена преко struct1
print(struct2.value) // Исписаће 0 - struct2 остаје непромењен
Поређење:
| Карактеристика | Класови | Структуре |
|---|---|---|
| Тип | Референца | Вредност |
| Присвајање | Копира се референца | Копира се вредност |
| Промене | Видљиве на свим референцама | Утичу само на копију |
| Наслеђивање | Подржано | Не подржава се |
| Идентичност | Може се проверити (===) |
Нема концепт идентичности |
Избор између класе и структуре зависи од захтева. Структуре се често користе за мале, једноставне типове података који представљају вредност (нпр. Point, Size, Range). Класови се користе за сложеније типове података који захтевају референтну семантику, наслеђивање или управљање животним циклусом објекта (нпр. UIViewController, UIView).