Sobes.tech
Junior

Тафовут байни намудҳои истинодӣ ва намудҳои арзишӣ дар чист?

sobes.tech AI

Ҷавоб аз AI

Ишора, у ёрда сақланган маълумотларга ишора қиладиган хотира манзилини сақлайди. Ҳақиқатан, ишорани сақловчи ўзгарувчи фақат ушбу манзилни эгаллайди, маълумотларни эмас. Ишора тури ўзгарувчига топширилганда, ишора нусхалаб олинади, маълумотлар эмас. Ишора кўрсатадиган маълумотлардаги ўзгаришлар, бу ишорани сақловчи барча ўзгарувчиларда акс этмоқда.

Қиммат тури тўғридан-тўғри маълумотларни сақлайди. Қиммат тури ўзгарувчига топширилганда, маълумотларнинг ўзи нусхалаб олинади. Бир қиммат тури бўлган ўзгарувчадаги ўзгаришлар, бу нусхани олган бошқа ўзгарувчиларга таъсир қилмайди.

Хусусият Ишора тури Қиммат тури
Сақлаш Маълумотларга ишора Ўзи маълумотлар
Топшириш Ишора нусхасини олиш Маълумотларни нусхалаш
Ўзгариш Барча ишораларга таъсир қилади Нусхаларга таъсир қилмайди
Жойлашув Heapда Stackда
Эркинлаштириш ARC / мусобақа йиғувчи Автоматик равишда, кўрсатилган ҳудуддан чиқишда
Swift мисоллари class, closure struct, enum, tuple, асосий турлар (Int, Bool, String ва бошқалар)
// Ишора тури мисоли (синф)
class ReferenceType {
    var value: Int
    init(value: Int) {
        self.value = value
    }
}

let ref1 = ReferenceType(value: 10)
let ref2 = ref1 // Ишора нусхалаб олинади
ref2.value = 20 // ref1 ва ref2 кўрсатадиган маълумотлар ўзгаради
print(ref1.value) // Чиқиш: 20
print(ref2.value) // Чиқиш: 20

// Қиммат тури мисоли (қурилма)
struct ValueType {
    var value: Int
}

var val1 = ValueType(value: 10)
var val2 = val1 // Маълумотлар нусхалаб олинади
val2.value = 20 // Фақат val2даги маълумотлар ўзгаради
print(val1.value) // Чиқиш: 10
print(val2.value) // Чиқиш: 20