2010-05-30 69 views
0

我正在将我在Visual Studio 2008中开发的应用程序移植到Cocoa。我目前正在为Cocoa做一个“学习即用”的方法,因此我可以在更小,更简单的项目中尝试不同的想法和技术,并最终将它们组合成一个大型应用程序。创建多窗口可可程序 - 启动程序建议?

我的程序逻辑如下(在一个愚蠢的意义上)。列表中的项目由我的老板授权。

  1. 申请开始 1a。验证CD程序是否在驱动器中。
  2. 验证许可证。如果找到且有效,请跳至步骤7
  3. 显示许可协议。
  4. 显示序列号提示。
  5. 验证并保存序列号。
  6. 隐藏所有之前的窗口。
  7. 加载应用程序主窗口从主应用程序窗口,其中包括当用户请求

将是最好的选择是什么,这种制作副本主应用程序窗口

  • 退出程序
  • 拦截请求和命令的应用程序?从我问的另一个问题中,我发现我应该将“主应用程序”窗口保留在一个单独的XIB文件中,因为我可能需要克隆并与之交互。

    我知道,因为Cocoa和Objective-C是基于C的,所以有一个Main方法。但是,你们所有人都会建议作为这种应用程序的起始位置?

  • +1

    对于问题的最后部分:通常您有一个YourappnameApplicatioDelegate类,将在应用程序启动时实例化。你应该从这里实例化你的其他类。你几乎从不使用Obj-C的主要方法。其余的我不知道,我只在iPhone上编程。 – Julien 2010-05-30 01:53:24

    +0

    谢谢。这应该对我很有帮助;更糟糕的是,我可以在那里放置'全球'变数和对象。 – 2010-05-30 02:21:01

    +0

    此外,没有主*方法*。对象有方法;一种方法仅作为类的一部分或类的一个实例存在。 main.m文件不定义类;它只包含'main' *函数*。函数从来不是对象的一部分。因此,功能和方法是两回事。 – 2010-05-30 07:15:26

    回答

    1

    所以这些归结到组织。就像Julien提到的那样,您需要一个YouappnameApplicationDelegate类 - 事实上,当您创建一个项目时,Xcode将为您创建并设置它。

    实现applicationDidFinishLaunching方法(它也应该由Xcode给你提供),并且实现你的逻辑步骤1和步骤2(和步骤7,8,9)。

    步骤3到5你可能想要在另一个类中实现。 RegistrationWindowController或类似的东西。您甚至可能希望在另一个nib文件中创建此窗口(不在Xcode提供给您的MainMenu.nib文件中)。在YouappnameApplicationDelegation的applicationDidFinishLaunching方法中,您将加载此笔尖(请参阅下面的代码示例)。这样你的代码组织得很好 - 这正是Cocoa真正指导你做的。

    好了,所以现在如何加载新的笔尖文件:

    myInstanceVariable = [[RegistrationWindowController alloc] initWithWindowNibName: @"MyNibName"]; 
    [myInstanceVariable showWindow: self]; 
    

    RegistrationWindowController应该是NSWindowController的子类。

    这应该带你进入你的研究很长的路,希望它有帮助!

    +0

    非常感谢!现在我已经研究了每个组件的零件 - 显示RTF并使其成为只读,生成并验证序列号,在窗口内播放视频等。开发和完成彼此独立的每个步骤。我只是遇到了一些问题,我应该如何将所有这些碎片拼凑在一起。谢谢你! :) – 2010-05-30 03:47:50