Junior — Middle
Barcha qiymatlarni saqlovchi ma'lumot turlari tayinlash yoki uzatishda majburiy ravishda nusxa olish mexanizmini qo'llaydimi?
sobes.tech AI
AIdan javob
Barcha ma'lumot turlari tayinlash yoki o'tkazishda nusxa olish mexanizmini ishlatmaydi. iOS (va Swift) da qiymat turlari (value types) va murojaat turlari (reference types) farqlanadi.
- Qiymat turlari (masalan, tuzilmalar, enumlar, asosiy turlar kabi Int, Double) tayinlash yoki o'tkazishda nusxa olinadi — yangi ma'lumot nusxasi yaratiladi.
- Murojaat turlari (masalan, sinflar) faqat ob'ektga murojaatni nusxalaydi, ob'ektni emas. Shunday qilib, bir nechta o'zgaruvchilar bir xil ob'ektga murojaat qilishi mumkin.
Swiftda misol:
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 // qiymat nusxalanadi
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // murojaat nusxalanadi
person2.name = "Bob"
print(person1.name) // Bob
Shu sababli, nusxa olish mexanizmi faqat qiymat turlariga qo'llaniladi, murojaat turlari esa murojaat o'tkazishni ishlatadi.