Почему вы пытаетесь изменить фреймворк? Вы должны определить itemID
как свойство или переменную экземпляра (или оба) в myAnnotation.h
. Вы говорите, что 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
вы можете использовать self.itemID
или [self itemID]
, чтобы получить значение itemID
, и вы можете использовать self.itemID = @"something"
или [self setItemID:@"Something"]
, чтобы установить значение.
РЕДАКТИРОВАТЬ 2:
Когда вы получаете currentAnnotation
, если компилятор не знает, что аннотация является экземпляром вашего класса MyAnnotation, он не будет знать о itemID
. Итак, сначала убедитесь, что вы включили эту строку в начало вашего .m
файла:
#import MyAnnotation.h
Это гарантирует, что компилятор знает о классе. Когда вы используете currentAnnotation
, вы используете его как экземпляр MyAnnotation
, например:
(MyAnnotation*)currentAnnotation
Это должно успокоить предупреждения.