【问题标题】:App Delegate giving warning: 'id <UIApplicationDelegate>' does not conform to the 'UIAlertViewDelegate' protocolApp Delegate 发出警告:“id <UIApplicationDelegate>”不符合“UIAlertViewDelegate”协议
【发布时间】:2010-10-24 02:22:14
【问题描述】:

我目前在我的应用程序启动时使用 UIAlertView 和 UIAlertViewDelegate。一切正常。唯一的问题是,每次我引用 App Delegate 时都会收到警告“类型 'id' 不符合 'UIAlertViewDelegate' 协议”,给我大约 32 个警告。

谁能解释一下为什么我会收到此警告以及如何满足它?

提前致谢!

【问题讨论】:

    标签: iphone ios4 uialertview uiapplicationdelegate


    【解决方案1】:

    我假设您的应用委托是您的警报视图委托?

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

    @interface SomeAppDelegate : NSObject <UIApplicationDelegate, UIAlertViewDelegate> {
    
    }
    
    // ... rest of interface
    
    @end
    

    然后你还需要实现所需的方法。

    编辑:进一步考虑,我认为您在引用应用程序委托时可能缺少演员表。所以你有这样的东西:

    MyAppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
    
    // what you want is:
    
    MyAppDelegate* appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
    

    【讨论】:

    • 对不起,我应该添加代码 sn-p 但这是我已经拥有的,它仍在创建警告。这就是为什么我觉得它很奇怪。
    • 还有一个你在哪里引用应用委托的例子?当您提出问题时,实际代码非常有用。 :) 也许您没有从 [[UIApplication sharedApplication] delegate] 转换结果
    • 第二个想法,我认为缺少演员表很可能是问题所在。我在上面编辑了我的答案。
    • 您编辑的代码有效。我正在使用第一个示例。我已经有了一个好主意,但你能解释一下为什么我需要在这种情况下进行演员表吗?我很好奇,对于其他偶然发现此页面的人......
    • 是的,就像大多数事情一样,今天早上我比昨晚清楚得多。 :) 所以 'appDelegate' 被声明为 MyAppDelegate*,这意味着它必须满足 AND 。但是 UIApplication 中的属性 'delegate' 被声明为类型 id。所以编译器只是警告你这个 id 类型不满足 。演员说,不,委托实际上是 MyAppDelegate*。
    【解决方案2】:

    主线程上可能不存在,试试

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      相关资源
      最近更新 更多