Protokol Kavramı
Protokol, nesnelerimize bazı durumlarda nasıl davranacaklarını söylememizi sağlıyor.
Protokol tanımalak için
@protocol ProtocolName // metodler ve propertyler @end
syntaxını kullanıyoruz.
Örnek olarak bir pasta grafik uygulaması yapalım.
Bu pasta grafik ekranını tekrar tekrar kullanabilmek için, bir protokol tanımlıyoruz. Bu protokol, pasta grafiğimizin veri kaynağını tanımlayacak. ismini PieChartViewDataSource olarak tanımlayalım. Bize gereken bilgiler, kaç tane dilim olacağı, bu dilimlerin büyüklükleri ve her dilimin başlığı.
@protocol PieChartViewDataSource - (NSUInteger)numberOfSegments; - (CGFloat)sizeOfSegmentAtIndex:(NSUInteger)segmentIndex; - (NSString *)titleForSegmentAtIndex:(NSUInteger)segmentIndex; @end
PieChartView classımızda (pasta grafiğin class ı), bu protokolü bir property’de tutacağız.
@interface PieChartView : UIView @property (weak) id <PieChartViewDataSource> dataSource; @end
Opsiyonel Metodlar
Protokollerde istediğimiz metodları opsiyonel hale getirebiliriz. Bunu yapmak için başına @optional ekliyoruz.
@protocol PieChartViewDataSource - (NSUInteger)numberOfSegments; @optional - (CGFloat)sizeOfSegmentAtIndex:(NSUInteger)segmentIndex; - (NSString *)titleForSegmentAtIndex:(NSUInteger)segmentIndex; @end
UITableViewDataSource protokolündeki required metodları ve optional metodları nereden öğrenebilirim