私のアプリには、iOS 3.0 以降をサポートする Three20 があります。
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 つの結果が見つかりました。
このセグメントの 1 つ
#ifdef __IPHONE_4_0
UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
__attribute__((weak_import));
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
__attribute__((weak_import));
#endif
この方法では2つ
- (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 を使用していないので、2 つの#ifdef __IPHONE_4_0ブロックにコメントを付けています。
これで問題は解決しますが、Three20 コードにコメントしないことでこの問題を解決する他の解決策があるのではないかと思います。
どうもありがとう。