Protokol, belirli bir işi gerçekleştirmek için gerekli metotlar, özellikler ve diğer gereksinimlerin bir planını tanımlar. Protokol, bu işi aktif olarak gerçekleştirmez bir anlamda işin tanımını ortaya koyar. İşin gerçekleştirimi ise bir sınıf, yapı ya da enumeration ile gerçekleştirilir.
Protokoller sınıf yapı ve enumeration’lara benzer şekilde tanımlanır.
protocol Ad {
// Protokol tanımı
}
struct Yapı: Protokl1, Protokol2 {
// yapı tanımı
}
Bir sınıf, bir super sınıftan türemişse önce sınıf adı sonar super sınıf adı yazılır:
class Sınıf: SuperSınıf, Protokol1, Protokol2 {
// sınıf tanımı
}
ÖRNEK:
Aşağıda Tutar adlı, tut özelliğini tanımlayan bir protocol tanımlanmıştır:
protocol Tutar{
var tut: Double { get }
}
hesap adlı struct ise Tutar adlı protokolü kullanmaktadır:
struct hesap: Tutar {
var tut: Double
var miktar:Double
}
var a = hesap(tut:1000.0,miktar:50.0)
print("TUTAR=\(a.tut)")
print("MİKTAR=\(a.miktar)")
PROGRAMIN ÇIKTISI:
TUTAR=1000.0
MİKTAR=50.0
ANY VE ANY OBJECT SÖZCÜKLERİ
Swift, spesifik olmayan veri tipleri ile çalışmak için iki özel tip sözcüğü içermektedir; bunlar any ve anyobject sözcükleridir.
AnyObject, herhangi bir sınıf örneğini (nesnesini) temsil edebilir. Any sözcüğü ise fonksiyon tipleri hariç herhangi bir tipteki örneği temsil edebilir.
ÖRNEK
class Kitap{
var ad: String
var yazar:String
init(ad: String, yazar: String) {
self.yazar = yazar
self.ad=ad
}
}
let kitaplar : [AnyObject] = [
Kitap(ad: "Çankaya", yazar: "F.Rıfkı Atay"),
Kitap(ad: "İnce Memet", yazar: "Yaşar Kemal"),
Kitap(ad: "Sisler Bulvarı", yazar: "Attila İlhan"),
Kitap(ad: "Her Gece Bodrum", yazar: "Selim İleri")]
for nesne in kitaplar
{
let kit = nesne as! Kitap
print("KİTAP : \(kit.ad), YAZAR.. \(kit.yazar)")
}
PROGRAMIN ÇIKTISI
KİTAP : Çankaya, YAZAR.. F.Rıfkı Atay
KİTAP : İnce Memet, YAZAR.. Yaşar Kemal
KİTAP : Sisler Bulvarı, YAZAR.. Attila İlhan
KİTAP : Her Gece Bodrum, YAZAR.. Selim İleri
ÖRNEK
var nesne = [Any]()
nesne.append(56)
nesne.append(4.34)
nesne.append(2.71)
nesne.append("ankara")
nesne.append((6.0, 15.0))
print(nesne)
PROGRAMIN ÇIKTISI
[56, 4.34, 2.71, ankara, (6.0, 15.0)]