Swift'te sınıf nesnelerine ve yapı nesnelerine nasıl erişilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Sınıf nesneleri (referans tipi):
Bir sınıf örneği bir değişkene veya sabite atandığında, aynı örneğe bir referans atanır. Bir referans aracılığıyla yapılan değişiklikler, bu örneğe işaret eden tüm referanslarda görülecektir.
class MyClass {
var value: Int = 0
}
let object1 = MyClass() // Örnek oluşturma
let object2 = object1 // object2 artık aynı örneğe işaret ediyor
object1.value = 10 // object1 üzerinden değişiklik yapıyoruz
print(object2.value) // 10 yazdırır - değişiklik object2 üzerinden de görünür
Yapılar (değer tipi):
Bir yapı örneği bir değişkene veya sabite atandığında, bu örneğin bir kopyası oluşturulur. Her değişken/sabit kendi bağımsız kopyasına sahiptir. Bir kopyadaki değişiklikler diğerlerini etkilemez.
struct MyStruct {
var value: Int = 0
}
var struct1 = MyStruct() // Örnek oluşturma
var struct2 = struct1 // struct1'in bir kopyası oluşturulur
struct1.value = 20 // struct1 üzerinden değişiklik
print(struct2.value) // 0 yazdırır - struct2 değişmeden kalır
Karşılaştırma:
| Özellik | Sınıflar | Yapılar |
|---|---|---|
| Tip | Referans | Değer |
| Atama | Referans kopyalanır | Değer kopyalanır |
| Değişiklikler | Tüm referanslarda görünür | Sadece kopyayı etkiler |
| Kalıtım | Desteklenir | Desteklenmez |
| Kimlik | Kontrol edilebilir (===) |
Kimlik kavramı yok |
Sınıf mı yoksa yapı mı kullanılacağı, gereksinimlere bağlıdır. Yapılar, genellikle küçük ve basit veri tipleri için kullanılır, örneğin Point, Size, Range. Sınıflar ise, referans semantiği, kalıtım veya nesnenin yaşam döngüsü yönetimi gerektiren daha karmaşık veri tipleri için tercih edilir, örneğin UIViewController, UIView.