Iphone 应用程序代表发出警告:';id<;UIApplicationLegate>';不符合';UIAlertViewDelegate';协议

Iphone 应用程序代表发出警告:';id<;UIApplicationLegate>';不符合';UIAlertViewDelegate';协议,iphone,ios4,uialertview,uiapplicationdelegate,Iphone,Ios4,Uialertview,Uiapplicationdelegate,我目前正在应用程序中使用UIAlertViewDelegate的UIAlertView启动。一切都很好。唯一的问题是,每次我引用应用程序委托时,都会收到警告“type'id'不符合'UIAlertViewDelegate'协议”,给我大约32条警告 有人能解释一下我为什么会收到这个警告,以及我如何才能满足它吗 提前谢谢 我假设你的应用程序代理是你的警报视图代理 如果是这样,您需要在app委托声明中告诉编译器。像这样: @interface SomeAppDelegate : NSObject &

我目前正在应用程序中使用UIAlertViewDelegate的UIAlertView启动。一切都很好。唯一的问题是,每次我引用应用程序委托时,都会收到警告“type'id'不符合'UIAlertViewDelegate'协议”,给我大约32条警告

有人能解释一下我为什么会收到这个警告,以及我如何才能满足它吗


提前谢谢

我假设你的应用程序代理是你的警报视图代理

如果是这样,您需要在app委托声明中告诉编译器。像这样:

@interface SomeAppDelegate : NSObject <UIApplicationDelegate, UIAlertViewDelegate> {

}

// ... rest of interface

@end

我假设你的应用程序代理是你的警报视图代理

如果是这样,您需要在app委托声明中告诉编译器。像这样:

@interface SomeAppDelegate : NSObject <UIApplicationDelegate, UIAlertViewDelegate> {

}

// ... rest of interface

@end

它可能不存在于主线程上,请重试

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"My Title"
                                                    message:@"My message"
                                                   delegate:self cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];

它可能不存在于主线程上,请重试

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"My Title"
                                                    message:@"My message"
                                                   delegate:self cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];

很抱歉,我应该添加代码段,但这是我已经拥有的,它仍在创建警告。这就是为什么我觉得它很奇怪。还有一个例子,你在哪里引用了应用程序代理?当您提出问题时,实际代码非常有用。:)也许您不是根据[[UIApplication sharedApplication]delegate]重新考虑后得出的结果,我认为缺少的转换很可能是问题所在。我编辑了上面的答案。编辑中的代码有效。我用的是第一个例子。我已经有了一个好主意,但是你能解释一下为什么我需要在这个场景中使用演员阵容吗?我很好奇,对于其他在这一页上跌跌撞撞的人来说……是的,就像大多数事情一样,今天早上对我来说比昨晚清楚多了因此,“appDelegate”被声明为MyAppDelegate*,这意味着is必须满足和。但是UIApplication中的属性“delegate”被声明为类型id。因此编译器只是警告您该id类型不满足。演员说,不,该委托实际上是一个MyAppDelegate*。对不起,我应该添加代码段,但这是我已经添加的代码段,它仍在创建警告。这就是为什么我觉得它很奇怪。还有一个例子,你在哪里引用了应用程序代理?当您提出问题时,实际代码非常有用。:)也许您不是根据[[UIApplication sharedApplication]delegate]重新考虑后得出的结果,我认为缺少的转换很可能是问题所在。我编辑了上面的答案。编辑中的代码有效。我用的是第一个例子。我已经有了一个好主意,但是你能解释一下为什么我需要在这个场景中使用演员阵容吗?我很好奇,对于其他在这一页上跌跌撞撞的人来说……是的,就像大多数事情一样,今天早上对我来说比昨晚清楚多了因此,“appDelegate”被声明为MyAppDelegate*,这意味着is必须满足和。但是UIApplication中的属性“delegate”被声明为类型id。因此编译器只是警告您该id类型不满足。演员说,不,这个代表实际上是一个MyAppDelegate*。