0


xcode にタブバー プロジェクトがあり、最初のビューで GPS の場所を見つける必要があり、appdelegate の 2 つの変数に経度と緯度を保存する必要があります。ここにいくつかのコード:

FirstViewController.h

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

@interface FirstViewController : UIViewController <CLLocationManagerDelegate>{ 
    CLLocationManager *locationManager;     
}    
@property (nonatomic, retain) CLLocationManager *locationManager;
@end

FirstViewController.m

#import "FirstViewController.h"
#import "CampeggiandoAppDelegate.h"
#import <CoreLocation/CoreLocation.h>

@interface FirstViewController ()

@end

@implementation FirstViewController
@synthesize locationManager;


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

        self.tabBarItem.image = [UIImage imageNamed:@"ic_home2"];
        self.tabBarItem.title=@"Home";
    }
    return self;
}
    - (void)viewDidLoad {

    [super viewDidLoad];
    self.locationManager = [[[CLLocationManager alloc] init] autorelease];
    self.locationManager.delegate = self;

    self.locationManager.distanceFilter=500.0f;
    self.locationManager.desiredAccuracy=kCLLocationAccuracyHundredMeters;
    [self.locationManager startUpdatingLocation];



}

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

    CampeggiandoAppDelegate *appDelegate=(CampeggiandoAppDelegate*)[[UIApplication sharedApplication]delegate];


    appDelegate.latitudineDel=[NSString stringWithFormat:@"%3.5f", newLocation.coordinate.latitude];
    appDelegate.longitudineDel=[NSString stringWithFormat:@"%3.5f", newLocation.coordinate.longitude];

}

コンパイラを実行すると、最適なビューが表示され、アプリケーションが壊れて次の例外が表示されます。

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[AppDelegate setLatitudineDel:]: 認識されないセレクターがインスタンス 0x84210b0 に送信されました'

何か助けはありますか?ありがとう。

4

1 に答える 1

0

変数を設定する前に、クラス インターフェイスは次のようになります。

@interface CampeggiandoAppDelegate : UIResponder <UIApplicationDelegate> {
// ...
// some ivars
// ...
}

@property (nonatomic, strong) NSString *latitudineDel;
@property (nonatomic, strong) NSString *longitudineDel;

@end

この瞬間にあなたが持っているものはこれです:

@interface CampeggiandoAppDelegate : UIResponder <UIApplicationDelegate> {
// ...
NSString *latitudineDel;
NSString *longitudineDel

// ...
}

@end

したがって、これらのインスタンス変数のセッターはありません。そのため、例外がスローされます。プロパティの詳細については、こちらをお読みください。

于 2013-04-26T08:22:54.417 に答える