我想用一個可選的委託方法擴展UIAlertViewDelegate協議。UIAlertViewDelegate擴展協議
接口
@protocol HPAlertViewDelegate;
@interface HPAlertView : UIAlertView<UIWebViewDelegate>{
id <HPAlertViewDelegate> delegate;
UIWebView *webView;
}
@property (nonatomic, assign) id <HPAlertViewDelegate> delegate;
@property (nonatomic, retain) UIWebView *webView;
- (id)initWithWebURL:(NSString *)url title:(NSString *)aTitle;
@end
@protocol HPAlertViewDelegate <UIAlertViewDelegate>
@optional
- (void)HPAlertViewWebViewDidLoad:(HPAlertView *)alertView;
@end
實施
@dynamic delegate
當我使用它在myViewController像:
HPAlertView *alertView = [[HPAlertView alloc] initWithWebURL:myURL tile:myTitle];
[alertView setDelegate:self];
我有2個問題:
如果我委託設爲@dynamic,我在HPAlertView委託總是空,即使setDelegate:自
如果我委託設爲@synthesize,我代表響應僅適用於新的@optional委託方法,而不適用於UIAlertView委託方法。
我知道這不是你要求的,但你不應該真的繼承'UIAlertView'。 – hypercrypt