Question

I've been searching for quite a while now but simply can't find anything, I already have window which I can create, but now when I tried to call makeKeyAndOrderFront for it, there was no application to call it for, so I was wondering if anyone could give a quick example on how do I create an application? I found out that it's NSApplication and I need to setDelegate etc, but not sure what exactly is required. for example, to create a window, I would've needed this code:

NSWindow *window;
window = [[NSWindow alloc] initWithContentRect: NSMakeRect(10, 100, 150, 200)
    styleMask:( NSResizableWindowMask | NSClosableWindowMask | NSTitledWindowMask)
    backing: NSBackingStoreBuffered
    defer: NO];
[window setTitle: @"Test window"];

So can anyone give me related code, but for NSApplication, I already have buttons and window?

Was it helpful?

Solution

Just start from one of the template available in Xcode. Then NSApplication is automatically set up.

If you want to do in the hard way, by coding everything, this series of blog posts "Working Without Nibs" will help you, which starts here. But you don't want to do that unless you have a good grasp of the inner workings of Cocoa.

So, just stick to what people usually do, and start from the template available in Xcode.

OTHER TIPS

To do this entirely in code, with no nib at all, you first should remove the NSMainMenuNib entry from your Info.plist file. Then, in main:

  1. Create an autorelease pool.
  2. Ask the NSApplication class for the shared application object. If nothing has ever asked for the shared application object before, this will create one.
  3. Create an NSMenu to hold the main menu. Create a menu item for each of the standard menus, then create a menu for each of the standard menus, and set each menu as the menu item's submenu. For each menu, create the items that should go in it. Don't forget to localize titles and to set appropriate key equivalents. Set the top-level menu as the application's main menu.
  4. For an application with a single window, create the window at this point, create and give it its content view, create any views you want in it and add them to the content view, and order the window in.
  5. Tell the application to run.
  6. Drain the pool.
  7. Exit successfully.

That's the bare minimum. Setting a delegate is, as usual, optional.

When you create an application the usual way, all of this—except creating and adding subviews, which you'd do in IB—is done for you.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top