【问题标题】:Creating NSApplication in cocoa?在可可中创建 NSApplication?
【发布时间】:2011-06-17 15:38:18
【问题描述】:

我已经搜索了很长时间但根本找不到任何东西,我已经有可以创建的窗口,但是现在当我尝试为其调用 makeKeyAndOrderFront 时,没有应用程序可以调用它,所以我想知道是否有人可以快速举例说明如何创建应用程序?我发现它是 NSApplication 并且我需要 setDelegate 等,但不确定到底需要什么。例如,要创建一个窗口,我需要以下代码:

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

那么任何人都可以给我相关的代码,但是对于 NSApplication,我已经有了按钮和窗口?

【问题讨论】:

  • Jeff 有一系列关于没有 nib 文件的 Cocoa 应用程序的博文,从 here 开始。
  • 如果您正在寻找一种编程方式来执行此操作,这可能会有所帮助:stackoverflow.com/questions/2997333/…

标签: cocoa nsapplication


【解决方案1】:

要完全在代码中完成此操作,完全没有 nib,您首先应该从 Info.plist 文件中删除 NSMainMenuNib 条目。然后,在main

  1. 创建一个自动释放池。
  2. 向 NSApplication 类请求共享应用程序对象。如果之前没有请求共享应用程序对象,这将创建一个。
  3. 创建一个 NSMenu 来保存主菜单。为每个标准菜单创建一个菜单项,然后为每个标准菜单创建一个菜单,并将每个菜单设置为菜单项的子菜单。对于每个菜单,创建应该放入其中的项目。不要忘记本地化标题并设置适当的等效键。将顶级菜单设置为应用程序的主菜单。
  4. 对于具有单个窗口的应用程序,此时创建窗口,创建并为其提供内容视图,在其中创建所需的任何视图并将它们添加到内容视图中,然后对窗口进行排序。
  5. 让应用程序运行。
  6. 排干水池。
  7. 成功退出。

这是最低限度的。像往常一样,设置委托是可选的。

当您以通常的方式创建应用程序时,所有这一切(除了创建和添加子视图(您会在 IB 中完成)之外)都将为您完成。

【讨论】:

    【解决方案2】:

    只需从 Xcode 中可用的模板之一开始。然后NSApplication会自动设置。

    如果你想以艰苦的方式做事,通过编码一切,这一系列博客文章“不使用 Nibs 工作”将帮助你,starts here。但是,除非您对 Cocoa 的内部运作有很好的了解,否则您不希望这样做。

    所以,只要坚持人们通常做的事情,从 Xcode 中可用的模板开始。

    【讨论】:

    • 感谢链接,休息是浪费时间,如果我想像“人们通常做的那样”那样做,我会那样做(:
    • @Mahi:那么您可以通过说“我知道如何使用 nib 文件来执行此操作,但出于好奇我想知道...”或类似的话来开始您的问题:p跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2011-07-04
    • 2016-07-22
    • 2020-09-19
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多