Swift’de Delegeler ve Kapanışlar: Karşılaştırma ve Analiz

Swift’de Delegeler ve Kapanışlar: Karşılaştırma ve Analiz

Swift programlama dili, çok kullanışlı ve esnek özellikleri ile tanınıyor. Swift’deki delegeler ve kapanışlar, programcılara kodlarının özelleştirilmesine ve genişletilmesine izin veriyor. Bu yazıda, Swift’teki delegeler ve kapanışlar arasındaki farkları karşılaştıracağız ve her birinin kullanım alanlarını inceleyeceğiz.

Swift delegeleri, bir nesnenin başka bir nesneye görevleri yürütmesini sağlayan bir arayüz olarak tanımlanabilir. Bir nesne, bir delegenin var olan metotlarını uygulayarak, görevleri başka bir nesneye devretmeyi sağlar. Böylece delegenin uygulayacağı görevleri belirleyebilirsiniz. Örneğin, bir UITableView nesnesinin bir UITableViewDelegate nesnesi tarafından yönetildiğini düşünün. UITableViewDelegate, UITableView’un nasıl çalışacağına karar vermek için UITableView’a bir dizi metot sunar. UITableViewDelegate, UITableView’un hangi satırların düzenlenebileceğini, seçilen satırların nasıl işleneceğini veya tablodaki değişikliklerin nasıl işleneceğini belirlemek için kullanılır.

Kapanışlar ise, kod parçacıklarının bütünlük olarak tekrar kullanılmasını sağlayan kod bloklarıdır. Kapanışlar, çoklu parametreleri alabilir veya hiç parametre almayabilir. Kapanışlar, bir fonksiyonu çağıran nesneye geri döndürülen değerleri, bir dizi işlemi veya diğer kapanışları çağırmayı sağlayan kod bloğudur. Kapanışlar, özellikle iOS geliştiricileri tarafından animasyon, arka plan işlemleri ve asenkron işlemleri gerçekleştirmek için kullanılır. Güzel bir örnek, bir tane dizi içerisindeki tüm sayıları toplamak istediğinizde, bir kapanış kullanabilirsiniz.

Şimdi, delegeler ve kapanışlar arasındaki temel farkları karşılaştıralım. Delegeler, bir nesneyi başka bir nesneye görevleri yürütmek için kullanılan arayüzlerdir. Delegeler, sadece görevlerin yürütülmesi için kullanılır ve herhangi bir değer döndürmezler. Kapanışlar ise, kod parçacıklarının tekrar kullanılmasını sağlayan kod bloklarıdır. Kapanışlar, çoklu parametreleri alabilir veya hiç parametre almayabilir ve kod bloğu çağıran nesneye bir değer döndürür.

Kısaca, delegeler bir nesneyi başka bir nesneye görevleri yürütmek için kullanılan arayüzlerdir ve herhangi bir değer döndürmezler. Kapanışlar ise, kod parçacıklarının tekrar kullanılmasını sağlayan kod bloklarıdır ve kod bloğu çağıran nesneye bir değer döndürür.

Şimdi, kapanışların kullanım alanlarına bakalım. Animasyon, arka plan işlemleri ve asenkron işlemler için kapanışlar kullanılır. Örneğin, bir arka plan işlemi gerçekleştirmek için bir kapanış kullanılabilir.

 
DispatchQueue.global(qos: .background).async {
    doSomethingHeavy()
}

Yukarıdaki kod, arka plan işlemi gerçekleştirmek için bir kapanış kullanır. Kapanış, doSomethingHeavy() fonksiyonunu arka plan işlemi olarak çalıştırmak için kullanılır.

Kapanışlar, dizi işlemleri gerçekleştirmek için de kullanılır. Örneğin, belirli bir dizideki tüm sayıları toplamak için bir kapanış kullanılabilir.

 
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0, { x, y in
    x + y
})
print(sum) // 15

Yukarıdaki kod, bir kapanış kullanarak belirli bir dizideki tüm sayıları toplamak için kullanılıyor. Kapanış, dizi içerisindeki sayıları toplamak için kullanılıyor ve sonuç olarak 15 döndürüyor.

Son olarak, delegelerin kullanım alanlarına bakalım. Delegeler, bir nesnenin başka bir nesneye görevleri yürütmesi için kullanılır. Bir UITableView nesnesinin bir UITableViewDelegate nesnesi tarafından yönetildiğini düşünün. UITableViewDelegate, UITableView’un nasıl çalışacağına karar vermek için UITableView’a bir dizi metot sunar. UITableViewDelegate, UITableView’un hangi satırların düzenlenebileceğini, seçilen satırların nasıl işleneceğini veya tablodaki değişikliklerin nasıl işleneceğini belirlemek için kullanılır.

 
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // Do something when a row is selected
}

Yukarıdaki kod, bir UITableViewDelegate nesnesinin bir UITableView nesnesini nasıl yöneteceğini göstermektedir. UITableViewDelegate, bir satır seçildiğinde bir şeyler yapmak için didSelectRowAt() metodunu kullanır.

Böylece, Swift’deki delegeler ve kapanışlar arasındaki farkları karşılaştırdık ve her birinin kullanım alanlarını inceledik. Kapanışlar, animasyon, arka plan işlemleri ve asenkron işlemleri gerçekleştirmek için kullanılırken, delegeler bir nesneyi başka bir nesneye görevleri yürütmek için kullanılır.

Yazımızı burada sonlandırıyoruz. Swift’teki delegeler ve kapanışlar arasındaki farklarınızı karşılaştırdık ve her birinin kullanım alanlarını inceledik. Umarım bu yazıdan faydalandınız.

Scroll to Top