-1

私はコンパスARアプリに取り組んでいます。私は持っているUIImagePickerViewControllerので、デバイスのカメラから背景を取得できます。内部UIView overlayには、すべての UI ボタン​​/サブビューを配置します。すべてのメソッドNSLog()の先頭に があるため、ログでアプリの進行状況を追跡できます。残念ながら、私は立ち往生しています。データをダウンロードしなかった後、これを使用します。UIView nothingViewこれを宣言し、 内のすべてのサブビューで追加しましたviewDidAppear:(BOOL)animated。ここに問題があります:nothingViewが表示されますが、相互作用 (デバイスの回転、アクションの押下UIButtonsなど) がアプリを一時停止しており、ログに記録されているのは次のとおりです:

2013-05-29 15:49:53.657 CloudReco コピー [6246:707] GeoVC: targetsRequestDidFinishForContent
2013-05-29 15:49:53.659 CloudReco コピー [6246:707] GeoVC: ターゲット ディクショナリからのデータがありません
2013-05- 29 15:49:53.662 CloudReco コピー [6246:707] GeoVC: showNothing
2013-05-29 15:49:53.664 CloudReco コピー [6246:707] GeoVC: showNothing 2
(gdb)

私はアニライザーを使用しましたが、ここではどの方向にも向いていませんでした。もし私が何らかの方法を受け取っただけなら、私はNSLog従おうとすることができましたが、痕跡があれば私は無力です.

何も見つからなかったという通知を送信したときに呼び出されるコード スニペットを次に示します。

-(void)showNothing:(NSNotification *)notification{
    NSLog(@"GeoVC: showNothing");
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"GeoVC: showNothing 2");
        loadingView.hidden = YES;
        closeButton.hidden = NO;
        startView.hidden = YES;
        gestrec.enabled = NO;
        nothingView.hidden = NO;
        [locationManager stopUpdatingLocation];
    });
}

その後、デバイスを回転させたり、アクションボタンを押さない限り、問題ありません...助けていただければ幸いです

注: iOS 5.1 と Xcode 4.2 を使用しています

更新:それが私が得たすべてです。ビューdeallocを非表示/終了/解放していないにもかかわらず、すべての操作の後に何らかの形で呼び出されています-少なくとも「私」ではありません

(gdb) bt
#0 0x37de2f78 in CoreLocationVersionNumber ()
#1 0x334b42bc in ?? ()

4

1 に答える 1

0

ロケーション オブジェクトへの強力な参照を保持する ivar またはプロパティがあることを確認し、デリゲート コールバックでそれらを解放しない (つまり、それらを nil する) のではなく、ブロックをメイン キューにディスパッチして解放します。どうやってこれを知っているのか聞いてください:-)

于 2013-06-03T13:22:36.540 に答える