Swiftda sinf va tuzilma obyektlariga qanday murojaat qilish mumkin?
sobes.tech AI
AIdan javob
Sinf ob'ektlari (referans turi):
Sinf ob'ekti o'zgaruvchi yoki konstantaga tayinlanganda, unga havola tayinlanadi. Bir havola orqali o'zgartirishlar, bu ob'ektga ishora qilayotgan barcha havolalarda ko'rinadi.
class MeningClass {
var qiymat: Int = 0
}
let obekt1 = MeningClass() // Ob'ekt yaratish
let obekt2 = obekt1 // obekt2 endi shu ob'ektga ishora qiladi
obekt1.qiymat = 10 // ob'ekt1 orqali o'zgartirish
print(obekt2.qiymat) // 10 chiqaradi - o'zgartirish ob'ekt2 orqali ham ko'rinadi
Strukturalar (qiymat turi):
Struktura ob'ekti o'zgaruvchi yoki konstantaga tayinlanganda, uning nusxasi yaratiladi. Har bir o'zgaruvchi/konstantaning o'zining mustaqil nusxasi bor. Bir nusxadagi o'zgarishlar boshqalariga ta'sir qilmaydi.
struct MeningStruktura {
var qiymat: Int = 0
}
var struktura1 = MeningStruktura() // Ob'ekt yaratish
var struktura2 = struktura1 // struktura1 ning nusxasi yaratiladi
struktura1.qiymat = 20 // struktura1 orqali o'zgartirish
print(struktura2.qiymat) // 0 chiqaradi - struktura2 o'zgarmaydi
Taqqoslash:
| Xususiyat | Sinflar | Strukturalar |
|---|---|---|
| Tip | Referans | Qiymat |
| Tayyorlash | Havola nusxalanadi | Qiymat nusxalanadi |
| O'zgarishlar | Barcha havolalarda ko'rinadi | Faqat nusxaga ta'sir qiladi |
| Merosxo'rlik | Qo'llab-quvvatlanadi | Qo'llab-quvvatlanmaydi |
| Identifikatsiya | Tekshirilishi mumkin (===) |
Identifikatsiya konsepti yo'q |
Tanlov, talablar va ehtiyojlarga bog'liq. Strukturalar, odatda, kichik va oddiy ma'lumot turlarida ishlatiladi, masalan, Point, Size, Range. Sinflar esa, murakkab ma'lumot turlarida, referans semantikasini, merosni yoki ob'ektning hayot aylanishini boshqarishni talab qiladigan hollarda ishlatiladi, masalan, UIViewController, UIView.