Swift olarak bilinen dili alıp "Swift ile ARC" olarak yeniden adlandırabilirsiniz. Daha sonra, tam olarak aynı sözdizimiyle, ancak nesnelerin ne zaman yer değiştirdiğiyle ilgili daha az garantiyle "Swift ile GC" adında yeni bir dil oluşturabilirsiniz.
ARC'li Swift'te, referans sayısı 0 olduğunda, nesne gidecektir. Çöp toplama ile, zayıf bir referansınız olduğu sürece, bu zayıf referansı, nesneyi "kurtarmak" için güçlü bir referansa atayabilirsiniz. (Swift'te, referans sayısı 0 olduğunda zayıf referanslar sıfırdır); bu büyük bir fark.
Ve elbette Swift ARC ile son referans sayısını öldürmenin nesneyi derhal ele alacağını garanti eder. Örneğin, aynı dosyaya aynı anda iki örnek yazma izninizin olmadığı bir FileWriter sınıfınız olabilir. ARC'li Swift'te oldWriter = nil; newWriter = FileWriter (...) ve yeni FileWriter'ın yalnızca eskisini sildikten sonra oluşturulduğunu bilirsiniz (etrafında başka bir başvuru tutmadıkça); Swift GC ile bu işe yaramaz.
Başka bir fark, "ARC ile Swift" te, sadece güçlü referans çevrimleriyle referans verilen, ancak gerçekte ulaşılamayan nesnelerin yeniden yerleştirilmemesinin garanti edilmesidir.
deinit
bir anahtar kelime ve onunla ilişkili anlambilimin varlığı aslında uygulamadan ziyade dilde kare sayımı yapan şeylerdir.