我在我的應用程序中支持iOS 3.0及以上版本的Three20。iPhone - 在iOS 3.x上啓動應用程序時崩潰(_UIApplicationDidEnterBackgroundNotification)
當我用iOS 3.0,iOS 3.1運行應用程序時,應用程序在啓動時立即崩潰。
下面是我的崩潰報告:
Date/Time: 2012-06-26 10:38:36.761 -0600
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread: 0
Dyld Error Message:
Symbol not found: _UIApplicationDidEnterBackgroundNotification
Referenced from: /var/mobile/Applications/8E9E6F79-80BB-4CCD-A510-CCBF7BB78BE8/MyApp.app/MyApp
Expected in: /System/Library/Frameworks/UIKit.framework/UIKit
Dyld Version: 149
你知道是怎麼回事,
我缺少在構建設置的東西嗎?
更新1:
所以我做了搜索UIApplicationDidEnterBackgroundNotification時在我的項目
,並有在TTBaseNavigator.m文件中發現3分的結果。
一個在這一領域
#ifdef __IPHONE_4_0
UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
__attribute__((weak_import));
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
__attribute__((weak_import));
#endif
兩個在這種方法
- (id)init {
self = [super init];
if (self) {
_URLMap = [[TTURLMap alloc] init];
_persistenceMode = TTNavigatorPersistenceModeNone;
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(applicationWillLeaveForeground:)
name:UIApplicationWillTerminateNotification
object:nil];
#ifdef __IPHONE_4_0
if (nil != &UIApplicationDidEnterBackgroundNotification) {
[center addObserver:self
selector:@selector(applicationWillLeaveForeground:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
}
#endif
}
return self;
}
你知道如何調整這些代碼,使應用程序將在iOS 3.0和iOS 3.1的運行。
更新2:
目前我不使用TTBaseNavigator所以我評論兩個的#ifdef __IPHONE_4_0塊。
這解決了我的問題,但我想知道是否有其他解決方案通過不評論Three20代碼來完成此工作。
非常感謝。
在Xcode中設置了應用程序的部署目標是什麼?我會認爲將其設置爲3.x會導致該代碼被編譯器忽略。 –
開發目標是iOS 3.0 –