![](/img/trans.png)
[英]Swift NSNotificationCenter observer in class extension crash
[英]Swift NSNotificationCenter add observer func in other class
我有ViewContoller
,在ViewContoller
中下载数据的类和用于处理数据的类需要从Internet上下载数据的调用方法,在NSNotificationcenter
发送完整的消息后,并使用数据处理类,在我的表中使用重载数据之后
问题notifCenter.postNotificationName("completeLoadService", object: complete) Thread1: EXC_BAD_ACCESS (code = 1, address = 0x10)
override func viewDidLoad() {
super.viewDidLoad()
ServicesLoad.loadServicesFromSite()
let center : NSNotificationCenter = NSNotificationCenter.defaultCenter()
var load : LoadServiceTrainersAreasClubs = LoadServiceTrainersAreasClubs()
center.addObserver(load, selector: Selector("loadService:"), name: "completeLoadService", object: nil)
}
下载类
operation.setCompletionBlockWithSuccess({
(operation : AFHTTPRequestOperation!, servicesData : AnyObject!) -> Void in
//some code
var complete : Bool = Bool()
complete = true
var notifCenter : NSNotificationCenter = NSNotificationCenter.defaultCenter()
notifCenter.postNotificationName("completeLoadService", object: complete)
})
类与数据LoadServiceTrainersAreasClubs一起使用
func loadService(notif : NSNotification){
println("complete")
}
LoadServiceTrainersAreasClubs是一个局部变量。 您对此没有很强的参考。 一旦viewDidLoad方法退出,它将被释放。 NSNotificationCenter将观察者作为弱引用。 因此,NSNotificationCenter似乎正在尝试通知您配置的观察者,但已被释放,从而导致崩溃。
另外,我建议不要将通知中心用于此类操作。 我建议使用一个块或委托来通知用户此服务的完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.