这一个让我难住。我正在编写一个跟踪公交时刻表的iPhone应用程序。用户可以将他们最喜欢的公共汽车站加入书签,以便他们可以从主屏幕直接跳到他们。我管理的在我AppDelegate类收藏(无关的代码已经被删节)名单:为什么我从Xcode获得这个警告? iOS的代码似乎很好
@interface AppDelegate : NSObject <UIApplicationDelegate>
+ (BOOL) isInFavorites: (FavoriteStopData*) inStop;
@end
我有提出了一个给定的公交线路的站名,并让用户选择一个看到预测总线视图控制器对于到达时间停在一个新的视图(可能停止添加到他们的收藏列表):
@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
的代码没有被公开BOOL属性被一些#define宏淹没;当我预处理“RouteStopsViewController.m”时,此代码不变。
代码行为正确,但我真的不想住在一起,我必须忽略每一个代码编译时间,以及禁止与一些的#pragma该警告的警告是路我宁愿不要除非必须采取。
我试图重新命名方法名,变量名,使用该方法来设置本地BOOL变量,然后设置与该属性,使用条件操作符(x和y:Z),以确保我m传递BOOL到属性...没有任何工作。那第一个警告永远不会消失。
任何人都可以提出为什么Xcode给我这个警告?
这是在运行Mac OS X 10.6.8(Snow Leopard)的MacBook Pro上的5.0 iPhone模拟器中运行的Xcode 4.2(Build 4C199)和iOS 5 SDK。
从您使用isXXXX的方式来看,您似乎希望通过所需的BOOL语句传递除0或1(NO或YES)以外的数字。 – CodaFi 2011-12-20 04:54:52
应该不是AppDelegate是UIResponder的子类,不是NSObject? – erdekhayser 2013-12-15 03:04:47