针对 iPhone 3.0 操作系统编译时 UIActionSheets 出现奇怪错误

Posted

技术标签:

【中文标题】针对 iPhone 3.0 操作系统编译时 UIActionSheets 出现奇怪错误【英文标题】:Weird error for UIActionSheets when compiling against iPhone 3.0 OS 【发布时间】: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 构建时没有出现。

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

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

应该是:

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

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

【讨论】:

呃!太好了,修复了它!我的 ActionSheet 错误完全不同。出于好奇,警告中提到了 UIActionSheetDelegate - 你知道这是为什么吗? @aloo -delegate 方法返回一个 id,UIApplication 实现的第一个协议是 UIActionSheetDelegate。由于 id 没有实现该协议,它给你一个错误。 (这是一个猜测,但我很确定是对的) *我很确定我是对的。 (我希望我们可以编辑 cmets...)

以上是关于针对 iPhone 3.0 操作系统编译时 UIActionSheets 出现奇怪错误的主要内容,如果未能解决你的问题,请参考以下文章

Adobe AIR 3.0自带运行时兼容什么版本的Android和iOS?

在 iPhone SDK 3.0 中链接静态库

applicationWillResignActive 关闭键盘 iPhone

发布的应用在应用商店中显示与 iPad 兼容,但仅针对 iPhone 编译

在 2.2.1 设备上运行具有 3.0 功能的 iPhone 应用程序

iPhone 3.0 指南针:如何获取航向?