2010-07-20 3 views
0

내 앱에서 최근에 사용 된 "MapKitDragAndDrop 3"패키지 (http://github.com/digdog/MapKitDragAndDrop)를 다운로드했습니다. 데모 프로젝트는 원활하게 진행됩니다.Iphone Drag'n'Drop MapKit이 "인스턴스로 전송 된 인식 할 수없는 선택기"예외를 생성합니다.

DDAnnotation.h + m 및 DDAnnotationView.h + m 파일은 모두 그대로 가져 왔습니다. 클래스를 호출하는 방법도 복사/붙여 넣기되었습니다.

DDAnnotation *annotation = [[[DDAnnotation alloc] initWithCoordinate:theCoordinate addressDictionary:nil] autorelease]; 
annotation.title = @"Drag to Move Pin"; 
annotation.subtitle = [NSString stringWithFormat:@"%f %f", annotation.coordinate.latitude, annotation.coordinate.longitude]; 

[self.mapView addAnnotation:annotation]; 

첫 번째 실행에서 "인스턴스로 전송 된 인식 할 수없는 선택기"예외가 발생했습니다. 디버거는 DDAnnotation 클래스에서 setCoordinate 메소드를 구현할 것을 제안합니다. 아직 데모 파일에는 @synthesize 나 메소드 구현이 없습니다.

DDAnnotation.m :

#import "DDAnnotation.h" 
@implementation DDAnnotation 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary { 

if ((self = [super initWithCoordinate:coordinate addressDictionary:addressDictionary])) { 
    // NOTE: self.coordinate is now different from super.coordinate, since we re-declare this property in header, 
    // self.coordinate and super.coordinate don't share same ivar anymore. 
    self.coordinate = coordinate; // CHECKPOINT 
} 
return self; 
} 

@end 

는 디버거에서 CHECKPOINT에 DDAnnotation.h에 떨어지는 DDAnnotation.m을 추적시. 내 응용 프로그램에서는 그렇지 않습니다.

나는 그 실수가 어리 석다는 것을 정말로 기대하지만, 나는 어디에서 봐야할지 모른다. 감사.

+0

자막을 설정할 때 오류가 줄에 표시되는 느낌이 들었습니다. 주석의 좌표 변수에 액세스하려고하는 경우입니다. – tadejsv

+0

DNK, 프로젝트를 다시 가져 오십시오. 문제가 발생한 프로젝트 설정 오류가 수정되었습니다. – digdog

답변

1

DDAnnotation.h 파일에이 문제에 대한 설명이 있습니다.

// 참고 : 기본적으로 @synthesize는 ( // 플래그 -Xclang 및 -fobjc-nonfragile-abi2 사용) LLVM 1.5 컴파일러에 의해 이루어지기 때문에, 우리는 만들 필요가 없습니다 방법 // -setCoordinate : 그리고 그 아이어는 더 이상. WWDC 2010 비디오, 세션 // 144 - "고급 목표 -C 및 가비지 수집 기술", 자세한 내용은 // 세부 정보를 확인하십시오.

+0

감사합니다. 그러나 나는 똑같이하려고 노력했다. 결과가 실패했습니다. 나는 프로젝트 wile가 어떻게 든 갱신되지 않았거나, 내가 틀린 무엇인가했다라고 생각한다 - 그것은 날지 않았다. 방금 ​​모든 병을 합성하고 구식 도사처럼 느꼈다 :-) – user962409

0

피트, 당신은 당신의 프로젝트 파일에 일부 설정을 변경할 필요가 말한대로 :

  • C /에 "LLVM 컴파일러 1.5"
  • 다른 C 플래그 설정 C++ 컴파일러 버전 (GCC_VERSION) (OTHER_CFLAGS) "-Xclang -fobjc-nonfragile-abi2" 플래그를 추가해야합니다.

프로젝트가 LLVM에서 도입 된 합성 속성을 사용하고 있으며 GCC 컴파일러가 지원하지 않습니다.

관련 문제