2011-08-03 9 views
0

오류가 너무 강해서 원하는대로 작동하지만 오류 메시지가 표시됩니다. TabBarController에 UIViewController를 추가하고 사용자가 해당 탭을 클릭 할 때지도보기를 표시 한 다음 사용자를 확대하면됩니다. 나는 xib을 만들었고 내가 한 유일한 편집은 MKMapView를 드래그하여 콘센트와 대리자를 연결하는 것이 었습니다. 그 외에는,이 모든 구현 코드입니다 :MKMapView 오류

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 

    [mapView setShowsUserLocation:YES]; 

} 

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 

    CLLocationCoordinate2D loc = [userLocation coordinate]; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250); 
    [mapView setRegion:region animated:YES]; 

} 

문제는 내가지도보기 "의 지역 선언"라는 마지막 줄에 노란색 알람 오류가 발생하고 있다는 점이다 "는 인스턴스 변수를 숨 깁니다."

그러나 앱을 실행하면 제대로 작동하는 것 같습니다. 이 오류가 무엇을 나타낼 수 있습니까?

+0

의 중복 가능성 : http://stackoverflow.com/questions/5626885/warning-local-declaration-of-mapview-hides-instance-variable – DucatiNerd

답변

1

MKMapView 객체를 mapView으로 선언했기 때문에 이러한 현상이 발생합니다. 메소드 선언 봐 :

- (void)mapView:(MKMapView *)mapView

는 자신의 변수와 같은 이름을 사용합니다. 이것은 컴파일러가 문제를 일으키는 곳입니다. 지금까지 몇 번이나이 시간을 보았습니다. 제 솔루션은 변수 이름을 변경하는 것입니다 (예 : worldView를 사용할 수 있음).

나는 스스로 해결할 수도 있다고 생각합니다. 다른 언어에서와 마찬가지로 this.variableName을 사용하면 self.variableName을 사용하여이 변수가 '귀하의'변수임을 나타낼 수 있다고 생각합니다. 그 말이 맞는다면?

- (void)feedDog:(Dog *)aDog; 

을 한 후 내 변수는 혼동을 피하기 위해 Dog를 호출 할 것이다 : 나는 내 자신의 방법을 선언 할 때

, 나는 보통 이런 식으로 않습니다.

내가하는 일. 누군가가 이것에 추가 할 것이 있으면, 자유롭게 느끼십시오. 저는 아직이 일에 상당히 익숙하지 만, 저는이 오류에 몇 번이나 빠져 들었습니다.

+1

컴파일러는 문제가되지 않으며,이 시도 코딩 오류를 피하려면지도보기가 원하는지도가 아닐 수도 있습니다. 아마 mapView 인스턴스 변수를 참조하려고했지만 mapView 매개 변수를 얻었습니다. – progrmr

0
[self.mapView setRegion:region animated:YES];