У меня есть ViewContoller
, загрузить класс и класс для работы с данными в ViewContoller
необходимости метод вызова для загрузки данных из Интернета, после NSNotificationcenter
отправить полное сообщение, и рабочий класс с данными, после того, как в моем таблица Я использую данные перезарядкаSwift NSNotificationCenter добавить наблюдатель FUNC в другом классе
Проблема - 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")
}
Переменная называется 'load',' LoadServiceTrainersAreasClubs' является типом. Но ваш вывод прав: объект освобождается к моменту доставки уведомления. Но почему было бы плохой идеей использовать центр уведомлений «вот так»? – DarkDust
NSNotificationCenter на мой взгляд, используется для простых от 1 до 1 отношений. Это решение шаблона проектирования наблюдателя, которое обычно используется для отношений от 1 до многих. Это может привести к путанице, а блоки/блокировки, используемые в качестве механизма обратного вызова, способствуют созданию более читаемого кода. –
Для отношений 1: 1 Я полностью согласен с вами, вот для чего нужен шаблон делегата. – DarkDust