2013-07-11 2 views
-5

내지도 위에이 UI를 추가하여 운전자가 운전하는 현재 속도를 보여주고 싶습니다. main.m에서 이러한 오류가 발생합니다. 왜, 어떻게 고칠 수 있습니까? 'viewSpeed'
인스턴스 메소드 선언되지 않은 식별자의iOS 앱에서 이러한 모든 컴파일 오류가 발생하는 이유는 무엇입니까?

사용 '-setViewSpeed'
이 예상
locationmanager.m ('ID'로 반환 형식 기본값)를 찾을 수 없습니다 ':'
예상 메서드 본문
예상 식별자 또는 '('
누락 '@end'

#import "locationManager.h" 

@implementation locationManager 
@synthesize locationManager; 
@synthesize fastView; 

- (id) init { 
    self = [super init]; 
    if (self != nil) { 
     self.locationManager = [[[CLLocationManager alloc] init] autorelease]; 
     self.locationManager.delegate = self; // send loc updates to myself 
    } 
    return self; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
    NSLog(@"Location: %@", newLocation description); 
{ 
    self.currentLocation = newLocation; 

    BOOL newLocationIsValid = [self isValidLocation:newLocation witholdLocation:oldLocation]; 
    if(newLocationIsValid && oldLocation) 
    { 
     int distance = [newLocation distanceFromLocation:oldLocation]; 
     if(distance >2 && distance<10) 
     { 
      [self.fastView setText:[NSString stringWithFormat:@"%i meters ", distance]]; 
     } 

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)errort 
{ 
    NSLog(@"Error: %@", [error description]); 
} 

@end 

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    NSLog (@"%s", __func__); 
} 
,

main.m

-(void)userDidLoagin 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)dealloc 
{ 
    [userMap release]; 
    [_Speed release]; 
    [viewSpeed release]; 
    [_fastView release]; 
    [super dealloc]; 
} 

- (void)viewDidUnload 
{ 
    [userMap release]; 
    userMap = nil; 
    [self setSpeed:nil]; 
    [self setViewSpeed:nil]; 
    [self setFastView:nil]; 
    [super viewDidUnload]; 
} 
+0

@Abhi Beckert는 다음과 같이 말했습니다. 또한'locationManager : didUpdateToLocation : fromLocation :'의 끝에 몇 개의 괄호가 빠져 있습니다. – QED

+4

-1 오류가 발생한 행을 표시하지 않고 막대한 코드 블록을 던지기위한 것입니다. – borrrden

+0

@borrrden 때때로 컴파일러는 오류를 쉽게 찾지 않습니다. 코드를 Xcode에 붙여 넣었고 디버거가 없었으므로 문제를 찾기 위해 한번에 한 줄씩 읽어야했습니다. -1을 보상하려면 +1하십시오. –

답변

1

변경이 : 여기에

NSLog(@"Location: %@", newLocation description); 

{ 

는 :

{ 

NSLog(@"Location: %@", newLocation); 

(주 난 후 {로 이동 descirption 제거).

이렇게하면 오류가 해결됩니다.

+1

'NSLog (@ Location : % @ ", [newLocation description]); 또는 단지 NSLog (@ Location : % @", newLocation);' – vikingosegundo

+0

@vikingosegundo 감사하지 않았 으면 좋겠어. 실수로 코드에 얼룩을지게하십시오. 내 대답이 업데이트되었습니다. –

+0

확실히 문제는 있지만 나머지 문제와 비교하면 아주 작은 문제입니다. – bbum

0

viewSpeed는 합성물이 아니기 때문에 속성이 아니며 자기 앞에 붙어 있기 때문에 볼 수 없습니다. 또는 dealloc에서 사용되는 경우 _입니다. 따라서 호출하려는 메소드가 존재하지 않습니다. 해당 행을

viewSpeed = nil; 

으로 변경하십시오. 그러면 문제가 해결됩니다.

편집 : viewSpeed도 선언되지 않았 음을 확인하지 못했습니다. 당신은 ivar이나 속성으로 선언해야합니다. 그 말로는, 당신이 게시 한 코드에서, 어디서나 그것을 사용하는 것처럼 보이지 않는 이유는 무엇입니까? @end도 잘못 배치 된 것 같습니다. locationManager : 위의 메소드입니다.

+0

그 이상으로 이동합니다. main.m에 @implementation에 실제로없는 메소드 정의가있는 것처럼 보입니다. – bbum

+0

나는 그것을 놓쳐 버렸음에 틀림 없다. 나는 편집 오류 목록에있다. 회고하면서, 나는 당신이 당신의 대답으로 돈에 있다고 생각한다. 편집 문제는 OP 문제의 가장 적은 것이다. –

+0

나는 ARC로 전환하는 것이 좋을 것이라고 들었다. 왜냐하면 할당/해제에 대해 걱정할 필요가 없기 때문이다. 이동하는 차량의 속도를 보여주는 UIlabel을 만들기 위해 어떻게해야할까요? – user2570674

3

우와. 두 단계를 거쳐 다시 검토해야합니다. basic architecture of iOS applications.

main.m에 있다고 주장하는 코드가 실제로 main.m에있는 경우 앱이 올바르게 구조화되지 않았습니다. 사실, 모든 iOS 응용 프로그램에서 결코 main.m 파일을 건드려서는 안됩니다. 그리고 그것들은 분명히 클래스의 @implementation에 있어야한다는 것을 의미하는 인스턴스 메소드 구현입니다.

+0

ARC로 전환하는 것이 좋을 것 같습니다. 할당/해제에 대해 걱정할 필요가 없기 때문입니다. 어떻게 움직이는 차량의 속도를 보여주기 위해 UIlabel을 만드는 대신에 이것을 할 수 있습니까? – user2570674

+0

bbum이이 코드가 모두 엉망입니다. 기본 및 도서 또는 자습서로 다시 시작하십시오. 먼저 걷고 실행하십시오. – uchuugaka

+0

@ user2570674 ARC로 전환하기 만하면 코드에서 심각한 구조적 문제로 보이는 부분을 수정하지 않습니다. 'main.m'에 구현 된 메소드가 정말로 있습니까? 어떤 반에서? 왜? – bbum

관련 문제