0

関数で行うすべてのことを実行したい:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
}

バックグラウンドで。多くの要素を含むページがあり、マップの負荷によってアプリケーションの使用が妨げられないようにしたいと考えています。アプリケーションが読み込まれると、マップが初期化され、ユーザーはマップが読み込まれるまで数秒待つ必要があります。バックグラウンドで何かできることを知っています

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    [self doWorkInBackground];
});

しかし、私はlocationManagerを持っていません.だから私はアプリケーションが地図なしで読み込まれ、地図の読み込みが完了するとそれがアプリケーションに表示されるようにしたい.助けてもらえますか?ありがとう.

4

2 に答える 2

0

これを info.plist ファイルに入れます

<key> UIBackgroundModes</key>
    <string>location</string>

私にとってはその仕事です)

また、非常に良いチュートリアルです!私はそれから始めます!

チュートリアル

于 2014-02-17T15:58:31.383 に答える
0

はい、投稿した非同期ブロックの間にコードを配置する必要があります。マップがブロック内からロードされた後、View Controller で別のメソッドを呼び出してマップを表示します。これはメインスレッドで実行する必要があります。そうしないと、男が台無しになります。

__weak typeof(self) weakSelf = self;    
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // load your map here
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf mapWasLoaded];
        });
 });

__weak は、ブロックでのメモリ リークを回避するためです。

于 2014-02-17T12:35:28.307 に答える