Sobes.tech
Junior

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.