Я новичок в разработке Objective-C и iOS, и в своем классе я объявляю протокол делегата.
Я нашел несколько примеров того, как это сделать, и все они очень похожи, но имеют некоторые различия, которые я хочу прояснить для себя и понять.
Пример 1:
(ссылки - https://stackoverflow.com/a/12660523/2117550 и https://github.com/alexfish/delegate-example/blob/master/DelegateExample/CustomClass.h а>)
МойКласс.h
#import <BlaClass/BlaClass.h>
@class MyClass; // removed in example 2
@protocol MyClassDelegate <NSObject>
@optional
- (void) myClassDelegateMethod:(BOOL)value;
@end
@interface MyClass : NSObject
@property (nonatomic, weak) id <MyClassDelegate> delegate;
@end
МойКласс.m
#import "MyClass.h"
@implementation MyClass
@synthesize delegate; // removed in example 2
- (void) myMethodToDoStuff {
[self.delegate myClassDelegateMethod:YES];
}
@end
Пример 2: (ссылки - http://www.tutorialspoint.com/ios/ios_delegates.htm)
На самом деле то же самое, за исключением этих двух отличий.
Чем они отличаются:
- В примере 1 мы объявляем
@class
перед протоколом, действительно ли это необходимо? или просто лучшая практика. Второй пример отлично работает без этого объявления. - В примере 1 мы используем
@synthesize delegate
, поскольку я понимаю, что он создает геттеры/сеттеры для свойства, но нам это действительно нужно? Второй пример работает без этого.
Оба примера работают нормально, я просто хочу избавиться от путаницы, возникающей во мне.
Спасибо!
UITableViewDelegate
) для лучших примеров правильно сформированных протоколов. - person Wain   schedule 18.05.2014