Должен ли я вызывать метод runModal NSSavePanel только из основного потока? - PullRequest
0 голосов
/ 24 июля 2011

У меня странные, но редкие сбои в моем приложении.

Я подозреваю, что это происходит потому, что runModal из NSSavePanel вызывается в потоке, отличном от основного потока.

Я прав, что это может быть причиной сбоев?

Ответы [ 3 ]

1 голос
/ 10 августа 2012

См. Руководство по программированию потоков от Apple:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html

"Классы, небезопасные для потоков: NSWindow и все его потомки."

NSSavePanel является потомкомNSWindow.

1 голос
/ 28 ноября 2012

Да.

У меня произошел сбой при вызове runModal в неправильном потоке.performSelectorOnMainThread часто полезно исправить это.

0 голосов
/ 24 июля 2011

Как правило, весь доступ к элементам пользовательского интерфейса должен осуществляться из основного потока, также иногда называемого потоком пользовательского интерфейса.

Так что я бы сказал, да, вы должны открыть его из основного потока.

Трудно сказать, является ли это источником ваших сбоев. Мой скромный опыт подсказывает мне, что сбои могут быть вызваны разными вещами ...

...