繁体   English   中英

Swift NSNotificationCenter在其他类中添加观察者函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM