О, это было 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?

Ответы на вопрос(1)

Ваш ответ на вопрос