0

私のアプリには、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 コードにコメントしないことでこの問題を解決する他の解決策があるのではないかと思います。

どうもありがとう。

4

2 に答える 2

2

イベントのドキュメントにUIApplicationDidEnterBackgroundNotificationは、「iOS 4.0 以降で利用可能」と記載されています。

于 2012-06-26T18:22:33.937 に答える
0

2 つの#ifdef __IPHONE_4_0ブロックにコメントを付けます。(アップデート 1を参照してください)
これで問題が解決しました。

于 2012-07-16T14:43:46.990 に答える