왜 프레임 워크를 수정하려고합니까? myAnnotation.h
에 itemID
을 속성 또는 인스턴스 변수 (또는 둘 다)로 정의해야합니다. 당신은 currentAnnotation.itemTag
가 작동하지 않는다고 말합니다. 그게 작동하려면, itemTag
을 currentAnnotation
클래스에 속한 클래스의 속성으로 정의해야합니다.
프레임 워크의 헤더 파일을 변경하면 다시 컴파일되지 않으므로 작동하지 않습니다.
편집 : 다음은 예제입니다.
MyAnnotation.h
에서 :
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
MyAnnotation.m
에서 :
이
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
@property
호출이 속성을 정의하고 @synthesize
호출이 설정의 값을 검색하는 (방법 당신을 위해 세터와 게터를 생성합니다 itemID
). MyAnnotation.m
에서 itemID
값을 얻으려면 self.itemID
또는 [self itemID]
을 사용할 수 있으며 self.itemID = @"something"
또는 [self setItemID:@"Something"]
을 사용하여 값을 설정할 수 있습니다.
편집 2 :
컴파일러는 주석이 MyAnnotation 클래스의 인스턴스 것을 알고하지 않는 경우, currentAnnotation
을 얻을, 그것은 약 itemID
를 알 수 없습니다. 그래서 먼저 당신이 당신의 .m
파일의 시작 부분에이 라인을 포함했는지 확인 : 컴파일러는 클래스에 대해 알고 있는지 확인 줘야
#import MyAnnotation.h
합니다. 당신이 currentAnnotation
를 사용하는 경우, 당신은과 같이 MyAnnotation
의 인스턴스로 캐스팅 :
(MyAnnotation*)currentAnnotation
경고를 조용히해야한다고.
죄송합니다. '속성 변수'가 의미하는 바를 명확히 할 수 있습니까? itemID의 인스턴스 변수가 NSString * itemID로 정의되어 있습니다 ...이 작업에 특별한 다른 작업을 수행해야합니까? 코드가 실제로 작동합니다 (원래 mapkit.framework로 되 돌렸을 때). – Chris
편집을 확인하십시오. –
이미 myAnnotation.h/m에 있습니다. 명확히하기 위해 myAnnotation.h/m 및 MapViewController.h/m이 있습니다. MapViewController.h/m 내에서 currentAnnotation.itemID를 사용하려고합니다. 예제와 코드에서 이미 본 내용을 기반으로 myAnnotation.h/m에서 itemID를 정의해야한다고 가정하고 있지만 여전히 "프로토콜에서 찾을 수 없습니다"라는 경고가 표시됩니다. – Chris