2010-05-30 68 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