這一個讓我難住。我正在編寫一個跟蹤公交時刻表的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