【问题标题】:Weird error for UIActionSheets when compiling against iPhone 3.0 OS针对 iPhone 3.0 操作系统编译时 UIActionSheets 出现奇怪错误
【发布时间】:2009-07-14 01:27:32
【问题描述】:

我最近开始针对 3.0 操作系统编译我的 iPhone 应用程序。该应用程序在针对 2.2.1 编译时运行良好,但是针对 3.0 编译会产生以下警告:

警告:输入 'id ' 才不是 符合“UIActionSheetDelegate” 协议

这发生在我的应用程序委托类中的以下代码 sn-p 的第二行。

+ (PooClientAppDelegate*) instance;
{
    UIApplication* app = [[UIApplication sharedApplication] delegate]; // warning occurs here
    return (PooClientAppDelegate*)app;
}

我不确定这个错误来自哪里,因为它在针对旧 SDK 构建时没有出现。

作为另一个线索或证据,在运行应用程序时,不会出现任何操作表,而是自动选择我的操作表的默认选项。我不确定这是否相关,但听起来不仅仅是巧合。

有什么想法吗?

【问题讨论】:

    标签: iphone objective-c iphone-sdk-3.0 delegates


    【解决方案1】:

    你在这一行有一个明显的错误:

    UIApplication* app = [[UIApplication sharedApplication] delegate];
    

    您正在获取 UIApplication 的实例,请求其委托,然后尝试将委托分配给 UIApplication 指针。

    应该是:

    id<UIApplicationDelegate> app = [[UIApplication sharedApplication] delegate];
    

    我不确定它是否能完全解决您的错误,但它肯定不会纠正您的错误方式。 =)

    【讨论】:

    • 呃!太好了,修复了它!我的 ActionSheet 错误完全不同。出于好奇,警告中提到了 UIActionSheetDelegate - 你知道这是为什么吗?
    • @aloo -delegate 方法返回一个 id,UIApplication 实现的第一个协议是 UIActionSheetDelegate。由于 id 没有实现该协议,它给你一个错误。 (这是一个猜测,但我很确定是对的)
    • *我很确定我是对的。 (我希望我们可以编辑 cmets...)
    猜你喜欢
    • 2013-02-25
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多