【发布时间】:2014-10-25 15:04:50
【问题描述】:
我有一门课,RA_CustomCell : UITableViewCell。这个类的一些实例注册为另一个类RA_LocationSingleton中的变量currentLocation的观察者。
RA_CustomCell.m
-(void)awakeFromNib
{
[self registerAsListener]
}
-(void)registerAsListener
{
if ([self.reuseIdentifier isEqualToString:@"locationcell1"])
{
[[RA_LocationSingleton locationSingleton]
addObserver:self
forKeyPath:@"currentLocation"
options:NSKeyValueObservingOptionNew
context:nil];
}
}
但是,当用户向后导航时,这些单元格会自然地被释放。问题是当 currentLocation 变量自行更新时,出现以下崩溃错误:
*** -[RA_CustomCell retain]: message sent to deallocated instance 0x9bd9890
很遗憾,我无法覆盖 -dealloc,因为我使用的是 ARC,并且键入 [super dealloc] 会产生以下警报:
ARC forbids explicit message send of 'dealloc'
我的问题是,我应该如何最好地管理我的位置监听器以避免这种崩溃?
【问题讨论】:
标签: ios objective-c location observer-pattern dealloc