Swift: Protocol-AssociatedType

0 283

Associated Type, protocol’lerde generic yapı elde etmemizi sağlar ve protocol’e uyma sözü veren tipler tarafından tipinin belirlenmesini beklerler.

Uygulamamızda kullanmak için kamera, mikrofon, fotoğraf galerisi gibi özellikler için kullanıcıdan izin isteriz. Bunun için basit bir protocol tanımlayarak uygulamasını gerçekleştirelim.

Protocol’ümüz “PermissionType” adını verdiğimiz bir associatedtype’a sahip olacak şekilde yaratıldı. İçerisinde ayrıca bu tipte bir değişken ve çağırıldığı yere bu tipi dönen closure sahip fonksiyon bulunuyor.

Şimdi bir tip yaratarak “Permission” protocolüne uymasını isteyelim.

“MicrophonePermission” tipimiz, “Permission” protocolüne uyuyor ve associatedtype’a “AVAudioSession.RecordPermission” tipini veriyor.

Yeni örneğimizde Kamera erişimi için izin istedik. Bu kez associatedtype’ımız “AVAuthorizationStatus” tipine sahip oldu ve request fonksiyonunda da bu tipi döndürmektedir.

Yaratmış olduğumuz protocol sayesinde proje genelindeki izin işlemlerinin uymasını istediğimiz bir düzen belirlemiş olduk.

Yeni örneğimizde oluşturduğumuz “TableViewCell” lerin uymasını istediğimiz bir protocol oluşturalım.

“Cell” protocolü içerisinde generic bir tip tanımlıyor ve bu tipi bekleyen bir fonksiyon içeriyor.

“CreditCardCell”, protocol’e uymak için “configure” metodunu uyguluyor ve beklediği tipe yine bizim oluşturduğumuz “CreditCard” ı bekliyor.

“TeamCell”, Cell protocol’üne uyabilmek için “configure” metodunda “Team” tipini bekliyor.

Bu örneğimizde de proje genelinde “TableViewCell” lerin çizilmesi için bir kural belirlendi. Projemizdeki bütün “TableViewCell” ler “DataType” alan bir configure metoduna sahip olup, UI elemanlarının değerlerini burada dolduracaktır.

Yorum yaz

Email adresiniz yayınlanmayacaktır.