О, это было 7 лет назад, к сожалению, у меня больше ничего нет под рукой :)
я есть некоторые проблемы с пониманием новой Песочницы Льва.
Я знаю, что Lion включает в себя процесс доверенного демона под названиемPowerbox
чья работа состоит в том, чтобы представлять и контролировать диалоговые окна открытия / сохранения от имени изолированных приложений.
КакРуководство по подписи кода и тестированию приложений говорит:
Каждый раз, когда приложение, работающее в изолированной программной среде, вызывает диалоговое окно NSOpenPanel или NSSavePanel вместо непосредственного отображения панелей, AppKit автоматически запрашивает Powerbox для представления диалогового окна. С точки зрения разработчика, не требуется никаких изменений кода с точки зрения использования этих панелей; этот процесс полностью прозрачен.
После того, как пользователь выберет набор файлов или каталогов, Powerbox использует новые функциональные возможности в модуле ядра изолированной программной среды, чтобы расширить изолированную программную среду вызывающего приложения и разрешить доступ к выбранным файлам. К тому времени, когда код приложения запрашивает у панели возвращенные URL-адреса или имена файлов, у него уже есть разрешение на доступ к этим файлам, и он может продолжать использовать файлы практически через любой API, который он уже использует.
Хорошо. Я сделал несколько практических тестов, используя этот код:
NSSavePanel *savePanel = [NSSavePanel savePanel];
savePanel.delegate = self;
savePanel.directoryURL = ...;
savePanel.nameFieldStringValue = ...;
[savePanel beginSheetModalForWindow:self.window
completionHandler:^(NSInteger returnCode) {
/* the completion handler */
}];
Странно то, чтоNSOpenSavePanelDelegate
методы, которые называются ДО обработчика завершения,не имеют доступа к файлам в файловой системе.
Это верно?
Но если это так, методы делегата, такие какpanel:validateURL:error:
становится бесполезным!
Можете ли вы помочь мне объяснить более подробно связи между приложением иPowerbox
?