2015-09-05 5 views
0

Я пытаюсь использовать NSNotification для связи между двумя классами swift. Я не знаю, что я делаю неправильно, но там, где другие уведомления работают нормально, один из них продолжает давать беспорядочную сортировку, отправленную случайному исключению. Случайно я имею в виду, что каждый раз, когда я выполняю это исключение кода, такое же, но ссылка на класс отличается от __CALayer, __NSArray, __NSSet и т. Д., Где я даже не использую эти классы напрямую. Любая помощь?NSNotification Random Как непризнанное исключение

Здесь наблюдатель метод класса инициализации:

override init() { 
     super.init() 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "downloadChapter:", name: "downloadListNotification", object: DisplayMangaViewController.self) 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "downloadChapter:", name: "downloadListNotification", object: DownloadRequestListViewController.self) 
    } 

и один я отправляю уведомление внутри:

let userInfo = ["downloadList" : self.selectedChapters , "mangaName" : self.obtainedMangaName] 
     let notification = NSNotification(name: "downloadListNotification", object: DownloadRequestListViewController.self, userInfo: userInfo as [NSObject : AnyObject]) 
     NSNotificationCenter.defaultCenter().postNotification(notification) 

Вот один пример исключения:

2015-09-05 19: 49: 45.598 TurkİşManga [12708: 58814] - [__ NSArrayM downloadChapter:]: непризнанный селектор отправлен в экземпляр 0x7fbf9c80dd90 2015-09-05 19: 49: 45,600 TurkİşManga [12708: 58814] *** Согласующее приложение из-за неперехваченное исключением 'NSInvalidArgumentException', причину: «- [__ NSArrayM downloadChapter]: непризнанной селектор послана к экземпляру 0x7fbf9c80dd90 '

и здесь также является проект метода downloadChapter:

func downloadChapter(notification : NSNotification){} 
+0

Необходимо отправить сообщение об ошибке, которое вы видите. Также первая строка или две из вашей функции «downloadChapter:». – Walter

+0

Я редактировал его. Можете ли вы проверить? –

+0

В моем тестовом проекте я не могу получить вашу ошибку. Я бы посмотрел содержимое userInfo. Протестируйте, установив это на известные значения: let userInfo = ["downloadList": ["1", "2", "3"], "mangaName": ["a", "b"]], а затем посмотрите, может отслеживать это таким образом. – Walter

ответ

0

Видимо мой класс наблюдатель будет освобождён и, таким образом, когда уведомление разместил там бы любой наблюдатель. Поэтому, прежде чем отправлять какие-либо уведомления, создание экземпляра из класса наблюдателей решило проблему. Благодарю.

Смежные вопросы