Sobes.tech
Junior

Kuidas Swiftis klassi ja struktuuri objekte ligi pääseda?

sobes.tech AI

Vastus AI-lt

Objektide klassid — viitega, struktuuriobjektid — väärtuse järgi:

Klassid (viit tüüp):

Klassi näidisele määramisel muutuja või konstantiga, määratakse viide samale näidisele. Ühe viitega tehtud muudatused kajastuvad kõigis viidetes, mis näitavad sellele näidisele:

class MyClass {
    var value: Int = 0
}

let object1 = MyClass() // Näidise loomine
let object2 = object1   // object2 näitab nüüd sama näidist
object1.value = 10      // Muudatus läbi object1
print(object2.value)    // Väljundiks on 10 - muudatus on nähtav ka object2 kaudu

Struktuurid (väärtusetüüp):

Struktuuri näidisele määramisel muutuja või konstantiga, luuakse selle näidise koopia. Iga muutuja/konstant sisaldab oma sõltumatut andmekopejat. Muudatused ühes koopias ei mõjuta teisi:

struct MyStruct {
    var value: Int = 0
}

var struct1 = MyStruct() // Näidise loomine
var struct2 = struct1    // Koopia loomine
struct1.value = 20       // Muudatus läbi struct1
print(struct2.value)     // Väljundiks on 0 - struct2 jäi muutumatuks

Võrdlus:

Omadus Klassid Struktuurid
Tüüp viit väärtus
Määramine viite koopia väärtuse koopia
Muudatused nähtavad kõigis viidetes mõjutab ainult koopiat
Pärimine toetatud mitte toetatud
Identiteet saab kontrollida (===) identiteedi kontseptsiooni pole

Klasside ja struktuuride valik sõltub nõuetest. Struktuure kasutatakse sageli väikeste, lihtsate andmetüüpide jaoks, mis esindavad väärtust (näiteks Point, Size, Range). Klassid on mõeldud keerukamate andmetüüpide jaoks, mis nõuavad viidete semantikat, pärimist või objekti elutsükli haldamist (näiteks UIViewController, UIView).