Cohorts
  • Discover
  • About Us
  • Blog
  • Patika.dev
  • Web3

İleri Seviye Swift

Closures
Struct and Class
Erişim Denetimi
Protokoller
Extensionlar
Optional Yapısı
Swift Dil Yazım Standartları

Cocoapods
Alamofire
SnapKit
KingFisher
Flex
IQKeyboardManager
SwiftGen
SwiftLint

Proje Oluşturma ve Giriş
Uygulama Arayüzünün Oluşturulması
Flickr API Nedir ve Nasıl Kullanılır?
Network Request ve Codable Yapısı
Arayüzün Sunucudan Gelen Data İle Doldurulması

Protokoller

Protokol, bir varlığın sahip olmasını beklediğimiz özellik ve metodların taslağıdır. Eğer varlık protokol tarafından beklenen özellik ve metodları karşılıyorsa, bu protokol ile uygun(conform) denir. Protokolleri Class, Struct veya Enum yapısı ile kullanabiliriz.

Protokoller ile bir varlıktan asgari beklediğimiz özellik ve metodları belirtebiliriz. Buna ek olarak protokolleri sağlayan varlıkların hepsine istediğimiz özellikleri Extension yapısı ile ekleyebiliriz.

Protokol Sözdizimi

Protokolleri tanımlarken Class, Struct veya Enum ile benzer bir yolu izleriz.

protocol SomeProtocol {
    // Protokol tanımları buraya gelecek
}

Eğer bir varlığın, tanımladığımız protokolü sağlamasını istiyorsak aşağıdaki şekilde bunu belirtmemiz gerekiyor.

struct SomeStructure: FirstProtocol, AnotherProtocol {
    // Structure tanımları buraya gelecek
}

class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
    // class tanımları buraya gelecek
}

Yukarıda görüldüğü gibi bir varlık birden çok protokolü sağlayabilir.

Protokolde Özellik Tanımı

Protokoller ile birtakım özellik ve metod gerekliliklerini belirleyebileceğimizden bahsetmiştik. Şimdi bunları nasıl protokol içinde tanımlayabileceğimizi inceleyelim.

protocol SomeProtocol {
    var mustBeSettable: Int { get set }
    var doesNotNeedToBeSettable: String { get }
}

Yukarıdaki örnekte iki farklı özellik tanımı yapılmıştır. Değişken tanımına çok benzemekle birlikte sonda süslü parantezler içinde değişkenin Atanabilir(Settable) veya Alınabilir(Gettable) olma durumları belirtilmektedir. Swift ile bir değişkenden sadece değer alınabilir şekilde tanımlama yapabiliriz. Bu değişkenlere değer ataması yapamaz sadece değer alabilirsiniz. Swift içinde bu tür değişkenlere Hesaplanmış Özellik(Calculated Property) denmektedir.

Protokol bir takım özelliklerin taslağı olduğu için özelliklere değer ataması yapamayız, fakat özelliğin sonuna { get } yazarak özelliğin sadece alınabilir olduğunu veya { get set } yazarak hem alınabilir hem atanabilir olduğunu belirtmemiz gerekmektedir. Yukarıdaki örnekte mustBeSettable özelliği alınabilir ve atanabilir olarak tanımlıyken, doesNotNeedToBeSettable özelliği sadece alınabilir bir özellik olarak tanımlanmıştır.

Aşağıda, SomeProtocol protokolünü sağlayan Struct yapısını görebilirsiniz.

struct SomeStruct: SomeProtocol {
    var mustBeSettable: Int = 0
    
    var doesNotNeedToBeSettable: String {
        return "You can only get value from this property."
    }
}

let someStruct = SomeStruct()

print(someStruct.doesNotNeedToBeSettable)
// Çıktı: You can only get value from this property.

Protokolde Metod Tanımı

Protokol içinde, protokolü sağlayacak varlıkların sahip olması gereken metod tanımlarını da yapabiliriz. Bu metodların gövdesi yoktur ve sadece metodun adı, parametreleri ve geri dönüş tipini içerebilir. Aşağıda protokol içinde yapılmış bir metod tanımını görebilirsiniz.

protocol MathProtocol {
    func sum(firstNumber: Int, secondNumber: Int) -> Int
}

Şimdi yukarıdaki protokolü sağlayan bir Class tanımı yapalım.

class SomeClass: MathProtocol {
    func sum(firstNumber: Int, secondNumber: Int) -> Int {
        return firstNumber + secondNumber
    }
}
Previous
Next

Lesson discussion

Swap insights and ask questions about “İleri Seviye Swift”.

Enroll to participate
Start the course to unlock the discussion. Enrolling helps us keep conversations relevant to learners.
Cohorts
WebsiteDiscoverBlogPatika.devRise In
CoursesCircleRustSoliditySolanaWeb3 FundamentalsBlockchain Basics
CompanyAbout UsTerms of UsePrivacy PolicyGDPR NoticeCookies
Don't miss any update!

Disclaimer: The information, programs, and events provided on https://cohorts.patika.dev is strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice, nor do we make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://cohorts.patika.dev disclaims any responsibility for financial decisions made by users based on the information provided here.

© 2026 Cohorts, All rights reserved