0

エラーなし-コンパイル時または実行時にスローされる例外...正常にビルドされます。私はメモリ管理を間違っていますか?ARCはすべてのファイルに対して有効になっています。

viewcontroller.h:

#import <UIKit/UIKit.h>

@interface workViewController : UIViewController 
<CLLocationManagerDelegate>{

    CLLocationManager *locationManager; 

}


@property (strong, nonatomic) IBOutlet CLLocationManager *locationManager;

@end

viewcontroller.m:

#import "workViewController.h"

@interface workViewController ()

@end

@implementation workViewController
@synthesize locationManager;


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

    NSLog(@"i worked lol");


}
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the 
    //view, typically from a nib.

    locationManager.delegate = self;

    [locationManager startUpdatingLocation];

}

- (void)viewDidUnload
{
    [locationManager stopUpdatingLocation];
    [self setLocationManager:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

prefix.pch:

#import <Availability.h>

#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <CoreLocation/CoreLocation.h>
#endif

とにかく、このコードは私がアプリを初めてビルドしたときに一度機能しました。私はこれに多くの苦労をしてきました、主にそれは時々動作し、他の時にはコンピュータを再起動するまでまったく動作しません。私はメモリ管理を完全に間違っていますか?

チュートリアルを1行ずつ確認したので、これは私を困惑させます。

アプリケーションは、デリゲートメソッドが呼び出された場所で中断します。

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

それは単にthread1ブレークポイントを示しています...そして私はデバッガーを読む方法がわかりません(それは私が何をすべきかわからないいくつかの16進数を提供するだけです...)

とにかく、私は自分が間違っていることを知りたいです!

4

1 に答える 1

0

CLLocationManagerオブジェクトを初期化してみてください。一般的に、これを行うために選択した方法はかなり奇妙です。通常、コアロケーションでは、didUpdateToLocationとdidFailWithErrorを実装するオブジェクトを作成し、デリゲートプロトコルを作成し、ロケーションが必要なメインスレッドでこのオブジェクトを初期化してから、startUpdatingLocationを呼び出します。

于 2012-08-12T05:57:36.207 に答える