1

사용 MKAnnotation, 내가 그래서 난 AdoptingAnAnnotation라는 이름의 클래스를 만들지도보기에 주석을 추가 할 때 몇 가지 문제가, 를 사용하는 방법 .h 파일은 다음과 # import를 # import를MKAnnotation

@interface AdoptingAnAnnotation: NSObject { 
} 

@synthesize latitude; 
@synthesize longitude; 

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 
- (NSString *) title; 
- (NSString *) subtitle; 
@end 

와하는 .m 파일

#import "AdoptingAnAnnotation.h" 

@implementation AdoptingAnAnnotation 

@synthesize latitude; 
@synthesize longitude; 

- (id) initWithLatitude:(CLLocationDegrees) lat longitude:(CLLocationDegrees) lng { 
    latitude = lat; 
    longitude = lng; 
    return self; 
    } 
- (CLLocationCoordinate2D) coordinate { 
    CLLocationCoordinate2D coord = {self.latitude, self.longitude}; 
    return coord; 
    } 
- (NSString *) title { 
    return @"217 2nd St"; 
    } 
- (NSString *) subtitle { 
    return @"San Francisco CA 94105"; 
    } 
@end 

illegal interface qualifier같은 오류 메시지가 따라입니다내 구문 오류 또는 MKAnnotation에 대한 다른 오류가 있습니까?

답변

2

@synthesize 문은 인터페이스가 아니라 클래스 구현에 속합니다. 이 때문에 "잘못된 인터페이스 한정자"오류가 발생합니다. 마지막으로 클래스는 MKAnnotation 프로토콜을 채택해야합니다.

+0

하지만 .h 파일에서 @synthesize를 제거하면 http://commondatastorage.googleapis.com/haibo/temp/Screen%20Shot%202012-02-25%20at%202.08과 같은 다른 오류 메시지가 표시됩니다. 54 % 20 PM.png 이것은 어떤 것을 선언해야 함을 의미합니다. – timger

+0

'lattitude'와'longitude'를 @synthesize로 만들려면 @interface에있는 것들에 대해 @property 선언이 필요합니다. 마찬가지로,'coordinate'에 대한 @property 선언을 가지고 있기 때문에, 당신은 또한 그 속성을 위해 @synthesize 지시자를 가져야 만합니다, 그렇지 않으면 접근자를 직접 제공해야합니다. – Caleb

0

.h를 두 번 게시했습니다 ... 편집하십시오. 또한 .h에 신디사이저가 있고, .m에 속해 있습니다. 그리고 이러한 MKAnnotation 메서드를 구현해야합니다.

+0

상기시켜 주셔서 감사합니다. – timger