Недавно я заинтересовался написанием некоторых системных служб для 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
Что я делаю не так?