Dlaczego starasz się zmodyfikować ramy? Powinno być zdefiniowanie itemIDjako własność lub zmiennej instancji (lub obu) w myAnnotation.h. Mówisz, że currentAnnotation.itemTag
nie działa; do tego, aby pracować, trzeba mieć itemTagzdefiniowany jako własność niezależnie od klasy currentAnnotationnależy.
Zmiana nagłówka pliku dla ram nie będzie skompilować go, więc nie będzie w stanie uzyskać to do pracy.
EDIT: Oto przykład.
w MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
w MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
@propertyWezwanie określa właściwość i @synthesizewezwanie stworzy ustawiające i pobierające za ciebie (metody do ustawiania i pobierania wartości itemID). W MyAnnotation.m, można użyć self.itemIDalbo [self itemID]aby uzyskać wartość itemID, a można użyć self.itemID = @"something"lub [self setItemID:@"Something"]ustawić wartość.
EDIT 2:
Gdy dojdziesz currentAnnotation, jeśli kompilator nie wie, że adnotacja jest instancją klasy MyAnnotation, nie będzie wiedzieć itemID. Tak więc, najpierw upewnij się, że masz włączone tę linię na początku swojego .mpliku:
#import MyAnnotation.h
Że wil zapewnić, że kompilator wie o klasie. Podczas korzystania currentAnnotation, rzucisz go jako przykład MyAnnotationtak:
(MyAnnotation*)currentAnnotation
To powinno uspokoić ostrzeżenia.