gpt4 book ai didi

iphone - 为什么我会从 Xcode 收到此警告? iOS代码看起来不错

转载 作者:行者123 更新时间:2023-11-28 23:09:54 25 4
gpt4 key购买 nike

这个让我难住了。我正在编写一个跟踪公交时刻表的 iPhone 应用程序。用户可以为他们最喜欢的公交车站添加书签,这样他们就可以从主屏幕直接跳转到这些车站。我在我的 AppDelegate 类中管理收藏夹列表(不相关的代码已被编辑):

@interface AppDelegate : NSObject <UIApplicationDelegate>
+ (BOOL) isInFavorites: (FavoriteStopData*) inStop;
@end

我有一个 View Controller ,它显示给定公交路线的停靠站列表,并允许用户选择一个以在新 View 中查看该停靠站的预计公交车到达时间(并可能将该停靠站添加到他们的收藏夹列表中):

@implementation RouteStopsViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
FavoriteStopData *stopData = [[FavoriteStopData alloc] init];
// ... set various properties in stopData from data in the selected cell
FavoriteStopViewController *fvc = [[FavoriteStopViewController alloc] initWithNibName:@"FavoriteStopViewController" bundle:nil];
fvc.stop = stopData;
fvc.isBookmarked = [AppDelegate isInFavorites:stopData];
[stopData release];
[self.navigationController pushViewController:fvc animated:YES];
[fvc release];
}
@end

线

fvc.isBookmarked = [AppDelegate isInFavorites:stopData];

收到两个警告:

“'AppDelegate' 可能不会响应 +isInFavorites:”
“传递‘setIsBookmarked’的参数 1 从指针生成整数而不进行强制转换”

我看不出有任何理由让 Xcode 认为“+isInFavorites:”是未定义的,但它的确如此。我已经确认这些可能的警告原因实际上并非如此:

  • '+isInFavorites:'在“AppDelegate.h”中声明(如上所示)

  • “RouteStopsViewController.m”执行#import“AppDelegate.h”(以及“FavoriteStopData.h”和“FavoriteStopViewController.h”)

  • 'isBookmarked' 是 FavoriteStopViewController 上的公共(public) BOOL 属性

  • 代码没有被某些#define 宏修改;当我预处理“RouteStopsViewController.m”时,此代码未更改。

代码运行正确,但我真的不想忍受每次编译代码时都必须忽略的警告,并且使用一些#pragma 禁用此警告是一条我宁愿不走的路,除非我有到。

我试过重命名方法名称、变量名称,使用方法设置局部 BOOL 变量,然后使用条件运算符 (x ? y : z) 设置属性,以确保我将 BOOL 传递给属性......没有任何效果。第一个警告永远不会消失。

谁能告诉我为什么 Xcode 会给我这个警告?

这是在运行 Mac OS X 10.6.8 (Snow Leopard) 的 MacBook Pro 上的 5.0 iPhone 模拟器中运行的 Xcode 4.2(Build 4C199)和 iOS 5 SDK。

最佳答案

如果编译器完全不知道 +isInFavorites: 方法,那么您会看到类似 +isInFavorites: not found(返回类型默认为“id”)的警告.

如果您没有看到该警告,那么我们可以假设编译器已经在某处 看到了该方法的声明。但是,编译器希望此方法返回指针而不是 BOOL,这就是为什么您会看到 make integer from pointer without a cast 警告。

检查项目中 isInFavorites: 方法的任何其他声明。检查是否有任何名为 AppDelegate 的全局变量可能与您的类名冲突。检查 AppDelegate.h 和 RouteStopsViewController.h 之间是否有任何循环导入。尝试重命名您的 AppDelegate 类。

关于iphone - 为什么我会从 Xcode 收到此警告? iOS代码看起来不错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com