Γιατί προσπαθείτε να τροποποιήσετε το πλαίσιο; Θα πρέπει να ορίζοντας itemIDως ιδιοκτησία ή instance variable (ή και τα δύο) στο myAnnotation.h. Λέτε ότι currentAnnotation.itemTag
δεν λειτούργησε? γι 'αυτό να λειτουργήσει, θα πρέπει να itemTagορίζεται ως ιδιοκτησία του ό, τι κατηγορία currentAnnotationανήκει.
Αλλαγή του αρχείου header για το πλαίσιο δεν θα το μεταγλωττίσετε, έτσι δεν θα είναι σε θέση να πάρει ότι για να λειτουργήσει.
EDIT: Εδώ είναι ένα παράδειγμα.
Σε 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κλήση θα δημιουργήσει setters και κτήτορες για σας (μεθόδους για να ρυθμίσετε και να ανακτήσει την αξία του itemID). Στο MyAnnotation.m, μπορείτε να χρησιμοποιήσετε self.itemIDή [self itemID]να πάρει την αξία του itemID, και μπορείτε να χρησιμοποιήσετε self.itemID = @"something"ή [self setItemID:@"Something"]να ορίσετε την τιμή.
EDIT 2:
Όταν φτάσετε currentAnnotation, αν ο compiler δεν ξέρει ότι ο σχολιασμός είναι ένα στιγμιότυπο της κλάσης MyAnnotation σας, δεν θα ξέρετε για itemID. Έτσι, βεβαιωθείτε πρώτα ότι έχετε συμπεριλάβει αυτή τη γραμμή στην αρχή του το .mαρχείο:
#import MyAnnotation.h
Αυτό wil εξασφαλίσει ότι ο μεταφραστής γνωρίζει την κατηγορία. Όταν χρησιμοποιείτε currentAnnotation, να το ρίχνει και μια εμφάνιση του MyAnnotation, όπως αυτό:
(MyAnnotation*)currentAnnotation
Αυτό θα πρέπει να ησυχάζει τις προειδοποιήσεις.