Должен ли я вызывать метод runModal NSSavePanel только из основного потока?
У меня странные, хотя и редкие, сбои в моем приложении.
Я подозреваю, что это происходит потому, что runModal
из NSSavePanel
вызывается в потоке, отличном от основного потока.
Я прав, что это может быть причиной сбоев?
3 ответа
Да.
У меня были сбои вызова runModal
не в ту нить. performSelectorOnMainThread
часто полезно исправить это.
Смотрите руководство по программированию потоков от Apple:
"Небезопасные классы: NSWindow и все его потомки".
NSSavePanel является потомком NSWindow.
Как правило, весь доступ к элементам пользовательского интерфейса должен осуществляться из основного потока, также иногда называемого потоком пользовательского интерфейса.
Так что я бы сказал, да, вы должны открыть его из основного потока.
Относительно того, является ли это источником ваших сбоев, трудно сказать. Мой скромный опыт подсказывает мне, что сбои могут быть вызваны разными вещами...