2011-12-30 55 views
3

我做了一個簡單的實驗中,NSWindow,我寫在Xcode下面的代碼:下創建C++

int main(int argc, char** argv) 
{ 
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; 
    NSApplication* app = [[NSApplication alloc] init]; 
    NSWindow* window = [[NSWindow alloc] 
     initWithContentRect: NSMakeRect(0, 0, 640, 480) 
     styleMask: NSTitledWindowMask | NSMiniaturizableWindowMask 
     backing: NSBackingStoreBuffered 
     defer: NO]; 
    [window setTitle: @"New Window"]; 
    [window center]; 
    [window makeKeyAndOrderFront:nil]; 
    [app run]; 
    [pool release]; 
    return 0; 
} 

它運行如預期,新的空窗在那裏,但如果我編譯它在具有命令端子line:

$ g++ test.mm -framework Cocoa 
$ ./a.out 

在沒有窗口的情況下,[app run]會變得輕而易舉。

我做錯了嗎?爲什麼它在Xcode和命令行之間有不同的行爲?有人可以告訴我如何在命令行中實現相同的行爲嗎?

在此先感謝。

回答

5

把你的代碼和編譯它在10.7.2機器上工作正常...窗口出現(雖然在我的終端窗口後面,並沒有顯示爲正在運行的應用程序)。

如果您希望讓應用程序顯示爲在Dock中運行的進程,則必須將其正確打包到.app包中。如果你做到以下幾點:

g++ test.mm -framework Cocoa 
mkdir -p cli.app/Contents/MacOS 
cp a.out cli.app/Contents/MacOS/cli 

,然後在命令行中運行cli.app/Contents/MacOS/cli,你的過程中會顯示爲一個運行的應用程序。

+0

酷,它的工作原理,謝謝,我會讀更多關於在蘋果的開發庫中的捆綁軟件。 – 2011-12-30 23:57:41

+0

很酷,謝謝!但出於某種原因,我的窗口無法選擇(使用鼠標) - 它始終保持灰顯狀態。對此有何想法? – peetonn 2013-10-30 20:30:32