我试图用一个可选的委托方法扩展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];我有两个问题:
如果我将委托设置为@,则即使将委托设置为@
发布于 2011-10-05 00:24:13
尝试@synthesize,然后按以下方式实现setter:
- (void)setDelegate:(id)aDelegate {
super.delegate = aDelegate;
delegate = aDelegate;
}我猜类中的@synthesize将生成一个名为delegate的新实例变量,它不同于超类delegate实例变量。您可以在这里阅读更多关于这一点的信息:http://cocoawithlove.com/2010/03/dynamic-ivars-solving-fragile-base.html
https://stackoverflow.com/questions/7655457
复制相似问题