我的TableViewCell注册通知。但我无法取消注册,因为我不知道什么时候。 我试图继承NSNotificationCenter但我没有以正确的方式尝试它。
一些想法如何解决这个问题?
答案 0 :(得分:2)
这里的问题是UITableViewCell
很少得到dealloc
'ed
通常你想要的是在你的子类'[[NSNotificationCenter defaultCenter] removeObserver:self]
方法中调用prepareForReuse
。 (务必在实施中致电[super prepareForReuse];
!)
答案 1 :(得分:1)
一种经典的方法是在UIViewController
的{{1}}派生类中注册您的通知,并在viewDidLoad
中取消注册。
对于viewDidUnload
派生类,如果你采用正确的方式(将显示逻辑与业务逻辑代码混合),你应该三思而后行。但是,您可以在UIView
注册并在initWithFrame
上取消注册。
由于dealloc
是UITableViewCell
派生的,因此正确的位置可以在UIView
中注册,也可以在initWithStyle
中取消注册(如果您没有重复使用您的单元格)。