Редактирование и iPhone SDK Framework? - PullRequest
1 голос
/ 23 марта 2010

Я работаю с MapKit и хочу иметь возможность добавлять значение (NSString *) itemTag к каждой из моих аннотаций. Я создал myAnnotiation.m и myAnnotation.h

Я попытался добавить itemTag в myAnnotation.h / m, но когда я пытаюсь получить доступ к currentAnnotation.itemTag в своем основном коде, он говорит: «itemID не найден в протоколах» - поэтому я пошел на MapKit.Framework и в MKAnnotation. час Я добавил (NSString *) itemID, но когда я сохраняю файл .h в Framework, он меняет значок файла и не отображается, как джайвинг со всем остальным.

Любая помощь или ссылки на помощь будут с благодарностью. Я даже не уверен, нахожусь ли я на правильном пути здесь, но Googling "изменить iphone SDK Framework" не очень много.

1 Ответ

4 голосов
/ 23 марта 2010

Почему вы пытаетесь изменить фреймворк? Вы должны определить 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

Это должно успокоить предупреждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...