So I made a little discovery in a 7 year old mailing list post yesterday, and found out how to create a fully-functional Cocoa app, without letting the default run loop take over permanently, and without embedding the executable in an application bundle. Here you go:
EDIT: OK Wordpress is being silly; obviously, put < > around the #import file
EDIT 2: Also, obviously, you need MainMenu.nib to be in the same folder as your executable.
EDIT 3: If you want to go NIBless, use NSBackingStoreBuffered, not the default NSBackingStoreRetained when creating your window!
// Build like so: gcc short.m -framework Cocoa #import Cocoa/Cocoa.h int main(int argc, char *argv[]) { [[NSAutoreleasePool alloc] init]; [NSApplication sharedApplication]; [[[NSNib alloc] initWithContentsOfURL:[NSURL URLWithString:@"MainMenu.nib"]] instantiateNibWithOwner:NSApp topLevelObjects:nil]; ProcessSerialNumber psn = { 0, kCurrentProcess }; TransformProcessType(&psn, kProcessTransformToForegroundApplication); [NSApp finishLaunching]; while (1) { NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:0.001] inMode:NSDefaultRunLoopMode dequeue:YES]; if (event) [NSApp sendEvent:event]; } }
0 Responses to “Cocoa sans NSRunLoop and a Bundle”
Leave a Reply