Protokol Kavramı
Protokol, nesnelerimize bazı durumlarda nasıl davranacaklarını söylememizi sağlıyor.
Protokol tanımalak için
1 2 3 |
@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ığı.
1 2 3 4 5 |
@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.
1 2 3 4 |
@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.
1 2 3 4 5 6 |
@protocol PieChartViewDataSource - (NSUInteger)numberOfSegments; @optional - (CGFloat)sizeOfSegmentAtIndex:(NSUInteger)segmentIndex; - (NSString *)titleForSegmentAtIndex:(NSUInteger)segmentIndex; @end |
UITableViewDataSource protokolündeki required metodları ve optional metodları nereden öğrenebilirim