Sobes.tech
Junior — Middle

Кандайча шилтемелерге негизделген маалымат түрлөрүн түздөн-түз маанилерди сактаган маалымат түрлөрүнөн айырмалоо керек?

sobes.tech AI

AIден жооп

iOS (Swift жана Objective-C) маалымат түрлөрү баалуу түрлөр (value types) жана ссылка түрлөрү (reference types) болуп бөлүнөт.

  • Баалуу түрлөр маалыматтарды түздөн-түз сактайт. Белгилөө же функцияга өткөрүүдө, маалыматтардын көчүрмөсү түзүлөт. Swiftте булар структуралар (struct), enumerationдар (enum) жана негизги түрлөр, мисалы, Int, Double, Bool кирет.

  • Ссылка түрлөрү маалыматтар жайгашкан эс тутум аймагына шилтемени сактайт. Белгилөөдө шилтеме көчүрүлөт, маалыматтар эмес. Бир шилтеме аркылуу жасалган өзгөртүүлөр башка жактан да көрүнөт. Swiftте булар класстар (class).

Аларды кантип айырмалоо:

  • Swiftте, эгер түр struct же enum катары жарыяланса, ал баалуу түрү.
  • Эгер class катары жарыяланса, ал шилтеме түрү.

Мисал:

struct Point {
    var x: Int
    var y: Int
}

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var p1 = Point(x: 0, y: 0)
var p2 = p1
p2.x = 10
print(p1.x) // 0 - көчүрмө өзгөргөн жок

var person1 = Person(name: "Alice")
var person2 = person1
person2.name = "Bob"
print(person1.name) // Bob - эки өзгөрмө бир эле объектке шилтеме кылат

Ушул жол менен, белгилөө жана өзгөртүү жүрүм-турумга карап, шилтеме негизделген түрлөрдү жана түздөн-түз маанилерди сактай турган түрлөрдү айырмалоо мүмкүн.