Я хочу прояснить концепцию делегата и протоколов в объективе c. Таким образом, существует два типа протоколов 1) Формальные 2) НеофициальныеЦелью делегатов и протоколов
В случае официального делегата .. то, что если человек определен метод протокола, но на самом деле не реализованы его в обоих. i.e Класс B является делегатом A и A имеет метод WindowDidMove как необязательный ... в этом случае. Каково было бы поведение? и необходимо ли реализовать функцию делегата в классе b. я не могу просто реализовать его в A и использовать его везде, где хочу ... и, наоборот, не определять его в A и давать отдельные реализации в B или классе C или D и использовать их, но я хочу ... прошу пояснить этот момент - @ класс A;
@protocol ADelegate <NSObject>
@optional
- (BOOL)A:(A *)foo doSumfin:(BOOL)decide;
@end
@interface A : NSObject {
NSString *bar;
id <ADelegate> delegate;
}
@property (nonatomic, retain) NSString *bar;
@property (nonatomic, assign) id <ADelegate> delegate;
- (void)someAction;
@end
Кроме того, что делает линии
id <A Delegate > delegate;
@property (nonatomic, assign) id <ADelegate> delegate;
помогают нам достичь ..
в случае неофициального протокола ... если я не дать реализацию для метода и еще вызовите метод делегата ... что произойдет?
отредактируйте ответ, чтобы объяснить сценарий 2 также ... в случае формального протокола .. что делать, если я даю отдельные реализации для одного необязательного метода в разных классах также, что произойдет, если я дам реализацию в класс протокола и хотите использовать это везде. пожалуйста, очистите этот пункт –