首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIAlertViewDelegate扩展协议

UIAlertViewDelegate扩展协议
EN

Stack Overflow用户
提问于 2011-10-05 00:18:10
回答 1查看 267关注 0票数 2

我试图用一个可选的委托方法扩展UIAlertViewDelegate协议。

接口

代码语言:javascript
复制
@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

实现

代码语言:javascript
复制
@dynamic delegate

当我在myViewController中使用它时,比如:

代码语言:javascript
复制
HPAlertView *alertView = [[HPAlertView alloc] initWithWebURL:myURL tile:myTitle];
[alertView setDelegate:self];

我有两个问题:

如果我将委托设置为@,则即使将委托设置为@

    • 在HPAlertView中的委托始终为空,我的委托只响应新的@可选委托方法,而不响应UIAlertView委托方法。
EN

回答 1

Stack Overflow用户

发布于 2011-10-05 00:24:13

尝试@synthesize,然后按以下方式实现setter:

代码语言:javascript
复制
- (void)setDelegate:(id)aDelegate {
    super.delegate = aDelegate;
    delegate = aDelegate;
}

我猜类中的@synthesize将生成一个名为delegate的新实例变量,它不同于超类delegate实例变量。您可以在这里阅读更多关于这一点的信息:http://cocoawithlove.com/2010/03/dynamic-ivars-solving-fragile-base.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7655457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档