2012-06-26 210 views
0

我在我的應用程序中支持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代碼來完成此工作。

非常感謝。

+0

在Xcode中設置了應用程序的部署目標是什麼?我會認爲將其設置爲3.x會導致該代碼被編譯器忽略。 –

+0

開發目標是iOS 3.0 –

回答

0

我評論了兩個#ifdef __IPHONE_4_0塊。 (請參閱更新1
這解決了我的問題。

2

UIApplicationDidEnterBackgroundNotification事件的文檔中,它提到「可用於iOS 4.0及更高版本」。

+0

感謝菲利普斯提醒我,我完全忘了這一點。 –