Размещение NSNotification в основном потоке
Я нашел следующий фрагмент кода, который позволяет NSNotification
для публикации в основном потоке из любого фонового потока. Я хотел бы знать, является ли это безопасной и приемлемой практикой, пожалуйста?
dispatch_async(dispatch_get_main_queue(),^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"ImageRetrieved"
object:nil
userInfo:imageDict];
});
4 ответа:
да.
Как правило, вы хотите, чтобы NSNotifications отправлялись на main, особенно если они запускают действия пользовательского интерфейса, такие как отклонение модального диалогового окна входа.
Доставка Уведомлений В Определенные Потоки
регулярные центры уведомлений доставляют уведомления по потоку в которую уведомление было опубликовано. Распределенные центры уведомлений доставляйте уведомления в основной поток. На раз, вы можете потребовать уведомления, которые будут доставлены в определенном потоке, который является определяется вами вместо центра уведомлений. Например, если объект, запущенный в фоновом потоке, прослушивает уведомления из пользовательского интерфейса, такие как закрытие окна, вы хотите получать уведомления в фоновом потоке вместо основного потока. В этих случаях необходимо захватить уведомления по мере их доставки в поток по умолчанию и перенаправления их к соответствующему потоку.
да
Это - вы попадаете в основной поток и публикуете свое уведомление. Не может быть безопаснее, чем.
Да
Swift 2 синтаксис
dispatch_async(dispatch_get_main_queue()) { NSNotificationCenter.defaultCenter().postNotificationName("updateSpinner", object: nil, userInfo: ["percent":15]) }
Swift 3 синтаксис
DispatchQueue.main.async { NotificationCenter.default.post(name: "updateSpinner", object: nil, userInfo: ["percent":15]) }
где-то вдоль линии это стало возможным с:
addObserver(forName:object:queue:using:)
что это здесь, но это