2012-06-26 4 views
0

У меня есть Three20 в моем приложении, которое поддерживает iOS 3.0 и выше.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 

Вы знаете, что происходит,
Я пропускаю что-то в настройках сборки?

UPDATE 1:
Так я делаю поиск для UIApplicationDidEnterBackgroundNotification
в моем проекте, и есть 3 результаты поиска в TTBaseNavigator.m файла.

один в этом сегменте

#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; 
} 

Вы знаете, как настроить эту коду, так что приложение будет работает на прошивке 3.0 и прошивке 3.1.

UPDATE 2:

В настоящее время я не использую TTBaseNavigator поэтому я комментирую два #ifdef __IPHONE_4_0 блоков.
Это исправляет мою проблему, но мне интересно, есть ли у кого-нибудь другое решение, чтобы сделать эту работу, не комментируя код Three20.

Большое спасибо.

+0

Что настроено в качестве цели развертывания вашего приложения в Xcode? Я бы подумал, что установка его на 3.x привела бы к тому, что компилятор проигнорировал бы этот код. –

+0

Цель разработки iOS 3.0 –

ответ

0

Я комментирую два #ifdef __IPHONE_4_0 блоки. (см. update 1)
Это исправляет мою проблему.

2

В документации для события UIApplicationDidEnterBackgroundNotification говорится: «Доступно в iOS 4.0 и более поздних версиях».

+0

Спасибо Филлипсу за то, что вы напомнили мне, я полностью забыл об этом. –

Смежные вопросы