Sobes.tech
Middle

Маалымат түрү (value type) шилтемелүү түргө (reference type) тиешелүү болсо, бул эмне дегендикти билдирет?

sobes.tech AI

AIден жооп

Маалыматтын түрү көчүрүлөт белгилөө же функцияга өткөрүлгөндө, ал эми шилтеменин түрү * шилтемеге өтөт*, башкача айтканда, бар экземплярга көрсөткүч көчүрүлөт.

Маалыматтын түрлөрү (Value Types):

  • Структуралар (struct)
  • Энумациялар (enum)
  • Туплдар (tuple)
  • Көпчүлүк негизги түрлөр (Int, String, Bool, Array, Dictionary, Set жана башка)
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p1дин мааниси p2га көчүрүлөт
p2.x = 10

// p1.x дагы эле 1, p2.x 10 болду
print("p1: \(p1.x)")
print("p2: \(p2.x)")

Шилтеменин түрлөрү (Reference Types):

  • Класстар (class)
  • Функциялар (closure)
class Coordinate {
    var x: Int
    var y: Int

    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }
}

var c1 = Coordinate(x: 1, y: 2)
var c2 = c1 // c2 ошол эле экземплярга шилтеме кылат
c2.x = 10

// c1.x дагы эле 10
print("c1: \(c1.x)")
print("c2: \(c2.x)")

Негизги айырмачылыктар:

Өзгөчөлүк Маалыматтын түрү (Value Type) Шилтеменин түрү (Reference Type)
Белгилөө Маалыматтын көчүрмөсү Шилтеменин көчүрмөсү (показчик)
Жад Стекке бөлүнөт (жеңил учурларда) Хадгалаган жеринде бөлүнөт
Жалпы колдонуу Ар бир өзгөрмө өзүнүн көчөсүнө ээ Бир нече өзгөрмөлөр бир эле экземплярга шилтеме кылышы мүмкүн
Муттабелдик Өзгөртүү үчүн көчөнү өзгөртүү керек Бир шилтемедеги өзгөртүү бардык жерде көрүнөт

iOS өнүктүрүүдө эки түрү да кеңири колдонулат. Анын айырмачылыктарын билсеңиз, ар бир тапшырма үчүн ылайыктуу түрдү тандай аласыз жана каалаган жаман таасирлерден сактансаңыз болот, өзгөчө мутабельдүү маалыматтар менен иштөөдө.