2011-06-25 15 views
2

ok、私は正式にナッツをやっていると思う... iOS 5.0シミュレータを使ってxcode 4.2でこのコードを実行しようとすると、あらゆる種類のエラーが発生する。このアプリでは、私がしようとしているのは、コアロケーションAPIを実行することだけです。Xcode 4.2でコンパイルエラー

私の場所 "コントローラ" クラス:

.H:

#import Foundation/Foundation.h 
#import CoreLocation/CoreLocation.h 

@protocol locationReceiverDelegate 
@required 

- (void)locationUpdate:(CLLocation *)location; 
- (void)locationError:(NSError *)error; 

@end 

@interface locationReceiver : NSObject <CLLocationManagerDelegate> { 
    CLLocationManager *locMgr; 
    id delegate; 
} 

@property (nonatomic, retain) CLLocationManager *locMgr; 
@property (nonatomic, assign) id delegate; 

@end 

.M:

#import "locationReceiver.h" 

@implementation locationReceiver 

@synthesize locMgr, delegate; 


- (id)init 
{ 
    self = [super init]; 
    if(self != nil) { 
     self.locMgr = [[CLLocationManager alloc] init]; 
     self.locMgr.delegate = self; 
    } 

    return self; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation  *)newLocation fromLocation:(CLLocation *)oldLocation { 
// if([self.delegate conformsToProtocol:@protocol(locationReceiverDelegate)]) { 
     [self.delegate locationUpdate:newLocation]; 
//  } 
} 

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
// if([self.delegate conformsToProtocol:@protocol(locationReceiverDelegate)]) { 
     [self.delegate locationError:error]; 
// } 
} 


@end 

私は.mファイルのエラーを取得しています「という@synthesize locMgr 、代議員; "

+0

これはあなたの問題ではないかもしれませんが、ivarとプロパティの間に型の不一致があります:ivarは 'id'ですが、プロパティは' id 'です。 – zneak

+6

アップルの開発者フォーラムでこれを尋ねると、Xcode 4.2はリリースされていないので、ここでARCの質問に答えることはできません。 –

答えて

2

「を割り当てるプロパティ 『デリゲート』の既存のIVAR 『デリゲート』は_unsafe_unretainedしなければならない」というあなたはないassignあなたの代理人ではなく、あなたの問題を解決する必要があります

@property (nonatomic, retain) id delegate; 

を行う必要があります。

+0

素晴らしい、ありがとう - それは確かにそれをした!しかし、私は場所を一切取得していません:(.... – TommyG

+0

初期化するクラスの "コントローラ"クラスの代理人として自分自身を設定することを覚えましたか? – uvesten

+0

「myController.delegate = self」のように – uvesten