Я хочу пояснить концепцию делегата и протоколов в цели c. Итак, существует два типа протоколов: 1) формальный 2) неформальный.
В случае формального делегата ... что, если человек определил метод протокола, но ДЕЙСТВИТЕЛЬНО не реализовал его в обоих. То есть класс B является делегатом A, а метод WindowDidMove является необязательным ... в этом случае. каково было бы поведение ??? и необходимо ли реализовать функцию делегата в классе b. не могу ли я просто реализовать его в A и использовать везде, где я хочу ... и, наоборот, не определять его в A и давать отдельные реализации в B или классе C или D и использовать их, как я хочу ... пожалуйста, поясните этот момент - @ класс А;
@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;
помогите нам достичь ..
в случае неформального протокола ... если я не даю реализацию для метода и все равно вызываю метод делегата ... что произойдет?