У меня проблема с повторным запуском приложения на 10.5. В моем Info.plist у меня есть LSMinimumSystemVersionByArchitecture, так что приложение будет работать в 64-битной для x86_64 и 32-битной на i386, ppc и ppc64.
У меня есть предпочтение в приложении, которое позволяет пользователю переключаться между значком Dock и NSStatusItem и предлагает пользователю перезапустить приложение, как только они изменят настройку, используя следующий код:
id fullPath = [[NSBundle mainBundle] executablePath];
NSArray *arg = [NSArray arrayWithObjects:nil];
[NSTask launchedTaskWithLaunchPath:fullPath arguments:arg];
[NSApp terminate:self];
Когда это выполняется на 10.5, оно перезапускает приложение в 64-битном режиме, что для меня нежелательно. Из того, что я собираю, читая документы, это потому, что ключи LS * не читаются, когда приложение запускается из командной строки.
Есть ли способ обойти это? Я попытался сделать что-то вроде ниже, которое работало на 10.6, но на 10.5 мне щебетало, что «путь запуска недоступен». ([NSApp isOnSnowLeopardOrBetter] - это категория, которая проверяет номер версии AppKit).
id path = [[NSBundle mainBundle] executablePath];
NSString *fullPath = nil;
if (![NSApp isOnSnowLeopardOrBetter])
fullPath = [NSString stringWithFormat:@"/usr/bin/arch -i386 -ppc %@", path];
else
fullPath = path;
NSArray *arg = [NSArray arrayWithObjects:nil];
[NSTask launchedTaskWithLaunchPath:fullPath arguments:arg];
[NSApp terminate:self];