Iphone NSNotificationCenter职位为零->;崩溃
我的TableViewCell注册通知。但我不能注销,因为我不知道什么时候。 我试图将NSNotificationCenter子类化,但我没有尝试正确的方法Iphone NSNotificationCenter职位为零->;崩溃,iphone,ios,uitableview,uikit,nsnotification,Iphone,Ios,Uitableview,Uikit,Nsnotification,我的TableViewCell注册通知。但我不能注销,因为我不知道什么时候。 我试图将NSNotificationCenter子类化,但我没有尝试正确的方法 如何解决此问题的一些想法?一种经典方法是在viewdiload中的UIViewController派生类中注册通知,然后在viewdiload中取消注册 对于UIView派生类,如果方向正确(将显示逻辑与业务逻辑代码混合在一起),您应该三思而后行。但是,您可以在initWithFrame中注册,并在dealloc上取消注册 由于UITabl
如何解决此问题的一些想法?一种经典方法是在
viewdiload
中的UIViewController
派生类中注册通知,然后在viewdiload
中取消注册
对于UIView
派生类,如果方向正确(将显示逻辑与业务逻辑代码混合在一起),您应该三思而后行。但是,您可以在initWithFrame
中注册,并在dealloc
上取消注册
由于
UITableViewCell
是UIView
派生的,因此正确的位置可以是在initWithStyle
中注册,也可以在dealloc
中注销(以防您不重用单元格).一种经典方法是在viewdiload
中的UIViewController
派生类中注册通知,然后在viewdiload
中注销通知
对于UIView
派生类,如果方向正确(将显示逻辑与业务逻辑代码混合在一起),您应该三思而后行。但是,您可以在initWithFrame
中注册,并在dealloc
上取消注册
由于
UITableViewCell
是UIView
派生的,因此正确的位置可能是在initWithStyle
中注册,也可以在dealloc
中注销(以防您没有重用单元格)。这里的问题是UITableViewCell
很少获得dealloc
通常,您需要在子类“
prepareforeuse
方法”中调用[[NSNotificationCenter defaultCenter]removeObserver:self]
。(一定要在实现中调用[super prepareforeuse];
)这里的问题是UITableViewCell
很少得到dealloc
通常,您需要在子类“
prepareforeuse
方法”中调用[[NSNotificationCenter defaultCenter]removeObserver:self]
。(请务必在您的实现中调用[super prepareforeuse];
)您需要向我们提供更多有关通知性质的详细信息。您何时注册,何时取消注册?dealloc是否可行?您需要向我们提供更多有关通知性质的详细信息。您何时注册,何时取消注册?dealloc是否可行?我的tableviewcell在开始下载时注册。我想取消注册,如果下载完成(这已经工作),如果细胞滚动出可见屏幕。但是我没有得到关于退出屏幕的信息。不,你不会得到,因为手机会被重复使用。这是错误方法的一个很好的例子。不要在视图中执行此操作,而是在其控制器中执行此操作。重做整个方法并使用控制器,而不是业务逻辑的视图本身。但是如果NotificationCenter检查观察者是否为零,一切都会好起来。我无法跟踪从控制器到有100个单元格要跟踪的单元格的下载和通知。@JeanetteMüller是的,但这不是解决问题的方法。该单元将被重用,因此不会为零。您可以重写prepareForReuse,也可以添加一个自定义方法,该方法在您开始使用一个单元格时调用,而该单元格只是将其注销(以防万一)。my tableviewcell在下载开始时注册。我想取消注册,如果下载完成(这已经工作),如果细胞滚动出可见屏幕。但是我没有得到关于退出屏幕的信息。不,你不会得到,因为手机会被重复使用。这是错误方法的一个很好的例子。不要在视图中执行此操作,而是在其控制器中执行此操作。重做整个方法并使用控制器,而不是业务逻辑的视图本身。但是如果NotificationCenter检查观察者是否为零,一切都会好起来。我无法跟踪从控制器到有100个单元格要跟踪的单元格的下载和通知。@JeanetteMüller是的,但这不是解决问题的方法。该单元将被重用,因此不会为零。您可以重写PravaReFieldE或添加一个自定义方法,每当您使用一个简单地注销它的单元格时(以防万一)。BTW,我同意@ to To的评论,如果您这样做,您可能在杂草中,并且可能想考虑重构,以便在控制器。我同意@的评论,如果你这样做的话,你可能在杂草中,并且可能想考虑重构,以便在控制器中处理。