0

CoreLocation フレームワークを追加し、自分の本のコードを読み直して正しくコピーしたことを確認しましたが、永続的なNo visible @interface for 'CLLocation' declares the selector 'setDesiredAccuracy:'エラーが発生しています。

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface WhereamiViewController : UIViewController {
    CLLocation *locationManager;
}

@end

#import "WhereamiViewController.h"

@interface WhereamiViewController ()

@end

@implementation WhereamiViewController

-(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        locationManager = [[CLLocation alloc] init
        [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    }
    return self;
}
@end
4

4 に答える 4

3

あなたが欲しいCLLocationManager、ではなくCLLocation

于 2012-08-12T00:00:24.380 に答える
3

使いたかったと思いますCLLocationManager...

CLLocationManager *locationManager;
于 2012-08-12T00:00:29.817 に答える
2

ではなく、-setDesiredAccuracyという名前のセレクターのみCLLocationManagerを宣言します。CLLocation

于 2012-08-12T00:00:34.613 に答える
0
CLLocation

位置オブジェクトであり、マップ ビューに表示できる特定の座標/位置を保持します。ただし、CLLocationManager位置と見出しの更新を管理するオブジェクトです。setDesiredAccuracyは、ロケーション マネージャーの位置と方向の更新の精度を設定する方法です。精度を高く設定すると、ロケーション マネージャーは現在地の非常に正確なポイントで更新されますが、かなり遅くなります。(そうではありませんが、他の精度と比較すると)。

場所がそれを更新するデリゲート メソッド:

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

更新を開始するには、最初に言ったように、精度と距離のフィルターを使用してカスタマイズできます。次に、開始するには、次のように記述します。

[locationManager startUpdatingLocation];

そして、更新を停止する方法を推測できます。

注: ARC を使用している場合は、ロケーション マネージャーをインスタンス変数 (.h で宣言) にします。これにより、ロケーション マネージャーが非常に迅速に解放され、アプリが位置情報を追跡できるかどうかをユーザーが判断できるようにするポップアップがポップアップして、 1秒未満。もちろん、あなたの場所は更新されません。

于 2012-08-12T00:12:07.997 に答える