Как правильно выложить автономный системный сервис в XCode? - PullRequest
2 голосов
/ 15 мая 2009

Недавно я заинтересовался написанием некоторых системных служб для OS X, но, поскольку у меня нет приложения для рекламы этих служб, я должен прибегнуть к написанию автономных системных служб. Документация Apple по системным сервисам по-спартански, но документация по автономным сервисам не существует.

На данный момент у меня есть проект Xcode, построенный из пакета в комплекте с двумя источниками HashifyService.h и HashifyService.m. Вот тестовый код, который у меня есть:

- (void) doServiceWork:(NSPasteboard *)pboard
            userData:(NSString *)userData
                 error:(NSString **)error {
  NSLog(@"Actually in the service now");
  NSString *pboardString;
  NSArray *types;

  NSLog(@"do test magic service! (pboard: %@, types: %@)", pboard, [pboard types]);


  NSString* outputString = @"It Worked";
  types = [NSArray arrayWithObject:NSStringPboardType];
  [pboard declareTypes:types owner:nil];
  [pboard setString:outputString forType:NSStringPboardType];
  [outputString release];
  return;
}

и это запись NSServices в моем Info.plist:

<dict>
<key>NSMenuItem</key>
<dict>
    <key>Menu item title</key>
    <string>HashifyTest</string>
</dict>
<key>NSMessage</key>
<string>doServiceWork</string>
<key>NSPortName</key>
<string>HashifyService</string>
<key>NSReturnTypes</key>
<array>
    <string>NSStringPboardType</string>
</array>
<key>NSSendTypes</key>
<array>
    <string>NSStringPboardType</string>
</array>
</dict>

Затем я создаю пакет услуг и помещаю его в ~/Library/Services/, где он будет надлежащим образом обнаружен, и мне предоставляется возможность использовать службу. Однако после активации службы возникает ошибка, которая регистрируется на консоли:

..../Hashify.service/Contents/MacOS/Hashify: cannot execute binary file 

Что я делаю не так?

1 Ответ

9 голосов
/ 15 мая 2009

Вам нужна функция main(). Это должно зарегистрировать сервис с помощью NSRegisterServicesProvider() и войти в цикл выполнения. То есть в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...