我有ViewContoller
,下载用于处理数据的类和类
在ViewContoller
需要来自互联网的下载数据的调用方法,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")
}
答案 0 :(得分:1)
LoadServiceTrainersAreasClubs是一个局部变量。你没有强烈的参考。一旦viewDidLoad方法退出,它将被释放。 NSNotificationCenter将观察者视为弱引用。因此,看起来NSNotificationCenter正在尝试通知您配置的观察者,但它已被解除分配,导致崩溃。
此外,我建议不要使用通知中心这样的事情。我建议使用块或代理通知消费者此服务完成。