Swift Delegates vs Closure: Genişletilebilir Programlama Seçenekleri

Swift Delegates vs Closure: Genişletilebilir Programlama Seçenekleri

Swift programlama dili, programcılar için genişletilebilir programlama seçenekleri sunmaktadır. Bunlardan bazıları, delegates ve closure’ları içerir. Swift dilinde delegates ve closure’lar, kodunuzu daha esnek hale getirmenize yardımcı olur. Bu yazıda, Swift’de delegates ve closure’lar arasındaki farklara odaklanacağız ve hangisinin ne zaman kullanılacağını tartışacağız.

Delegates, diğer bir programlamada sıkça kullanılan bir yöntemdir. Delegate’ler, bir sınıfın veya nesnenin, başka bir sınıfın veya nesnenin özelliklerini veya metotlarını kullanmasına izin verir. Delegation, istemci-sunucu ilişkisini temsil eder. İstemci, başka bir sınıfın veya nesnenin özelliklerini veya metotlarını kullanmak için başka bir sınıfa veya nesneye delegeler. Sunucu, istemcinin gönderdiği istekleri işleyebilmek için gerekli özellikleri veya metotları sağlar.

Swift’de, delegate oluşturmak için bir protokol tanımlamamız gerekir. Bu protokol, istemci tarafından uygulanan özellikleri ve metotları tanımlar. Örneğin, bir UIViewController sınıfının, bir başka sınıfın özelliklerini ve metotlarını kullanmasını sağlamak için bir UIViewControllerDelegate protokolü tanımlayabiliriz. Aşağıdaki kod, UIViewController sınıfının ve UIViewControllerDelegate protokolünün nasıl tanımlandığını göstermektedir:

class ViewController: UIViewController { 
    // ... 
} 
 
protocol UIViewControllerDelegate { 
    // ... 
}

Swift’de closure’lar, delegelere benzer şekilde çalışır. Ancak, closure’lar, sunucu ve istemci arasında bir ilişki kurmaz. Bunun yerine, closure’lar istemci tarafından tanımlanan kod parçacıklarıdır. Böylece, closure’ların, istemci tarafından kullanılabilecek özel kod parçacıkları oluşturmasına izin verir. Ayrıca, closure’ların, istemcinin talep ettiği herhangi bir zamanda kullanılabilecek kod parçacıkları oluşturmasına da izin verir. Aşağıdaki kod, bir closure’un nasıl tanımlandığını göstermektedir:

let closure = { (param1: Int, param2: String) -> String in 
    // ... 
    return "Hello, world!" 
}

Delegates ve closure’lar, Swift programcıları için genişletilebilir programlama seçenekleri sunmaktadır. Delegates, programcıların başka bir sınıfın veya nesnenin özelliklerini ve metotlarını kullanmalarını sağlar. Closure’lar ise, istemci tarafından tanımlanan kod parçacıklarıdır ve istemcinin talep ettiği herhangi bir zamanda kullanılabilecek kod parçacıkları oluşturmasına izin verir. Bu yazıda, Swift’de delegates ve closure’lar arasındaki farkları tartıştık ve hangisinin ne zaman kullanılacağını tartıştık.

Scroll to Top