У меня есть объект, который наследуется от класса MKPlacemark MapKit. У меня есть запуск методы во время viewDidLoad моего ViewController, что создает такой объект (Alloc + INIT) и передать его в MapView следующегоОсвобождение объекта
[self.mapView addAnnotation:<my instance of my class inheriting MKPlacemark>]
Однако, когда я запускаю свою программу, я получаю следующее сообщение об ошибке:
An instance 0x9a5d650 of class <name of my class> was deallocated while key value
observers were still registered with it. Observation info was leaked, and may even
become mistakenly attached to some other object. Set a breakpoint on
NSKVODeallocateBreak to stop here in the debugger.
Обратите внимание, что я использую ARC. Может ли кто-нибудь сказать мне, как я могу избежать такого освобождения?
Спасибо!
EDIT: Моя проблема не предупреждение само по себе, это то, что я не хочу, чтобы этот объект был DEALLOCATE в тот момент ...
EDIT2: Код класса является следующая
заголовочный файл выглядит следующим образом
@interface OPTCreatureMark : MyMark
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
-(id)initWithCoordinate:(CLLocationCoordinate2D)coordinate;
@end
и .m, как этого
@implementation MyMark
@synthesize coordinate;
-(id) initWithCoordinate:(CLLocationCoordinate2D)coordinate_ {
if (self = [super initWithCoordinate:coordinate_ addressDictionary:nil]) {
self.coordinate=coordinate_;
return self;
} else {
return nil;
}
}
@end
Вы используете KVO здесь, в любом из ваших классов? – Unheilig
Какой класс был освобожден? Контроллер просмотра на экране? Вид на экране? Модель в этом контроллере? Модель, используемая другим контроллером? Это предупреждение означает, что вы забыли «removeObserver: forKeyPath:« где-то ». – Kevin
Это мой класс, наследующий MKPlacemark. – user1553136