4

ARC lite対応アプリを持っています(弱参照をゼロにせずにARCを有効にしました、Apple LLVM4.0)。iOS4.0に設定された展開ターゲット。iOS4.0から5.1.1でテストされています。デバッグビルドを使用してXcodeを介してインストールすると常に正常に動作しますが、リリース構成でアドホックビルドを作成すると、iOS 4.2.1を搭載した第2世代iPodでの起動時に常にクラッシュしますが、他のデバイス(第3世代でも)では正常に動作しますiOS 4.3を搭載したiPod)。

クラッシュログには、シンボルが見つからないことが示されています:_objc_retainAutoreleasedReturnValueそしてメソッドmainが呼び出されるとクラッシュします(その後、dyld_stub_binder、dyld :: fastBindLazySymbol)

私はいくつかの検索を行いましたが、このクラッシュは通常、アークが有効なライブラリがアークのないプロジェクトに含まれている場合に発生します。しかし、私の場合、プロジェクト全体でアークが有効になっています。

手がかりはありますか?

どうもありがとう。

[編集]更新:NSLogを使用してアドホックビルドをデバッグできます。

main.mは次のようなものです。

int main(int argc, char *argv[]) {
    NSLog(@"ok before entering autorelease pool");
    @autoreleasepool {
        NSLog(@"ok after entering autorelease pool");
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([XXX class]));
    }
}

NSLog(@ "自動解放プールに入った後はok")は正常に呼び出されますが、application:didFinishLaunchingWithOptions:は入力されません。

4

2 に答える 2

1

コマンドラインビルドツールが関係しているようです。xcodebuild コマンドを使用してアドホック ビルドをアーカイブしていました: xcodebuild -scheme myscheme clean build archive

そして、このクラッシュが発生しました。

次に、Xcode からアーカイブしようとしましたが、アドホック ビルドは実際にはすべてのデバイスで正常に動作します。とても奇妙です (アドホックにビルドされたコマンド ラインは、iPod 第 2 世代よりも新しいデバイスで機能することに注意してください)。

ここでは、Xcode の [アーカイブ] ボタンのみを使用します。しかし、私はこの質問を Apple dev フォーラムに投稿しました: https://devforums.apple.com/message/711334

于 2012-08-08T01:04:48.147 に答える
0

私の答え:同じ問題からどのように抜け出すか。

手順:

1.最初にコード記号列ですべての変更を行い、プロジェクトタブとターゲットタブでもすべての設定が希望どおりに機能することを確認します。

2.正しいプロビジョニングを選択し、正確なバンドル識別子を指定するなど、最初のステップですべての設定を行うだけで、xcodeを終了できます。

3.2 ステップの後、コンピューターを再起動して、最初のステップで選択したプロファイルをビルドします。

今はうまく機能しているので、この答えがあなたにも役立つかもしれません.とにかく、上記の問題の私の解決策..... :)

于 2012-10-29T10:41:04.657 に答える