成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Xcode里實現一個窗口程序 代碼實現

移動開發 iOS
本文主要講解一下如何通過編寫代碼的方式來實現一個窗口程序,當然這個程序十分的簡單,我們先來看內容。

Xcode里實現一個窗口程序 代碼實現是本文要介紹的內容,主要講解一下如何通過編寫代碼的方式來實現一個窗口程序,了解XCodeInterface builder為我們的開發工作做了哪些工作。

cocoa的坐標系有點和習慣不一樣,習慣了第四象限坐標系,再用***象限,感覺很奇怪。這次主要講解一下如何通過編寫代碼的方式來實現一個窗口程序,當然這個程序十分的簡單,不過它演示了一些我們應該了解的東西,因此應該可以更好的幫助我們了解XCodeInterface builder為我們的開發工作做了哪些工作。

大部分講解Cocoa編程的書都會用到Xcodeinterface builder,這兩個工具的結合是開發Cocoa應用程序的***選擇, 但是當中往往隱藏了許多細節的東西,為了對Cocoa的運作方式有更好的了解,我決定用代碼來實現一些Interface Builder中Nib文件實現的部分功能,以此來研究Cocoa的運作方式。

下面我們先看看這個最簡單的HelloWin的源代碼。

  1. #import <Cocoa/Cocoa.h> 
  2.  
  3. int main(int argc, char* argv[])  
  4. {  
  5.     NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];  
  6.     NSApplication* app = [NSApplication sharedApplication];  
  7.  
  8.     //Create the main window  
  9.     NSRect rc = NSMakeRect(0, 0, 800, 600);  
  10.     NSUInteger uiStyle = NSTitledWindowMask | NSResizableWindowMask | NSClosableWindowMask;  
  11.     NSBackingStoreType backingStoreStyle = NSBackingStoreBuffered;  
  12.     NSWindow* win = [[NSWindow alloc] initWithContentRect:rc styleMask:uiStyle backing:backingStoreStyle defer:NO];  
  13.     [win setTitle:@"HelloWin Test"];  
  14.     [win makeKeyAndOrderFront:win];  
  15.     [win makeMainWindow];  
  16.  
  17.     //Start the event loop by calling NSApp run  
  18.     [NSApp run];  
  19.     [pool drain];  
  20.     return 0;  

編譯命令如下:

  1. gcc HelloWin.m -framework Cocoa -o HelloWin 

所 有的Cocoa程序都要連接Cocoa這個Framework,Cocoa Framework會自動引用其他需要的framework,比如Foundation Framework。這個編譯指令生成的程序名字叫HelloWin, 你可以通過在終端下執行下面的命令來看看這個程序的運行情況。

  1. ./HelloWin 

窗口顯示如圖所示:

[[36913]]

你會發現這個程序在Dock上面沒有圖標,在菜單欄上沒有菜單, 雖然你可以關掉這個窗口, 但是在終端的提示中可以看到這個應用程序沒有退出, 現在在終端按ctrl+C結束這個應用程序。

下 面來具體看一下這個簡單的程序,首先我們import了Cocoa這個Framework,然后創建了一個NSAutoreleasePool的實例,接 下來我們通過NSApplication的類方法sharedApplication得到了一個NSApplication對象,并將這個對象賦給一個 NSApplication類的實例, 其實這個賦值是不需要的, 因為在調用sharedApplication的時候, Cocoa設置了另外一個全局的NSApplication對象的實例, NSApp,所以你可以看到在后面調用run方法的Receiver是NSApp,而沒有用app。所以你可以簡單的在這里直接調用

  1. [NSApplication sharedApplication]; 

以后在需要NSApplication對象的時候直接使用NSApp就可以了。

在 得到了NSApp之后,程序開始創建窗口,因為這個是窗口也是程序的主窗口(mainWindow), 所以在創建這個窗口的時候,針對窗口的styleMask也需要滿足一定的條件。如果一個窗口想成為主窗口,必須是具有標題 (NSTitleWidowMask)或者擁有可改變大小屬性(NSResizableWindowMask)。另外如果你希望這個窗口能夠被關掉,那么 NSClosableWindowMask也是需要的,否則盡管這個窗口能顯示出來, 但是你會發現標題欄上的關閉按鈕是灰色的。

在初始 化窗口之后,通過setTitle設置窗口的標題,對makeKeyAndOrderFront:的調用是一個關鍵,因為一個窗口想成為 mainWindow,必須是可見的,在調用這個方法之后,我們就可以通過makeMainWindow方法來讓這個窗口成為程序的主窗口。

在有了主窗口之后, 我們可以調用NSApplication的run方法來啟動程序的消息循環,到這時應用程序就開始運行了, 也能接受各種應用程序或者窗口的事件了。

這 里有個地方需要提示一下,我們在代碼中看到設定的初始Rect起點是(0,0),但是卻顯示在屏幕的左下角,這個問題是因為Mac上缺省的坐標系與 Windows下面的不同,Mac上的坐標系原點在屏幕的左下角,所以整個屏幕是出于***象限的,這與我們在中學時候學到的知識是一致的,以后會講到這個問題的。

小結:在Xcode里實現一個窗口程序 代碼實現的內容介紹完了,希望本文對你有所幫助。

原帖地址  http://www.cocoachina.com/bbs/read.php?tid-23.html

責任編輯:zhaolei 來源: Cocoa China
相關推薦

2009-08-14 00:55:21

C#程序編譯

2014-04-29 15:08:26

PostgresMongoDB

2024-01-08 13:47:00

代碼分析工具

2016-03-08 09:52:22

xcode插件開發

2021-01-04 09:12:31

集合變量

2023-07-10 07:58:45

2022-01-04 11:08:02

實現Localcache存儲

2017-03-28 21:03:35

代碼React.js

2022-01-26 16:30:47

代碼虛擬機Linux

2022-06-29 09:02:31

go腳本解釋器

2011-07-06 18:10:20

Xcode 4 iPhone

2011-07-06 18:31:21

Xcode 4 iPhone 模擬器

2020-09-24 11:46:03

Promise

2022-08-02 14:21:20

滑動驗證碼鴻蒙

2022-07-13 15:31:29

手繪板canvas鴻蒙

2022-07-28 14:20:44

懸浮球鴻蒙

2017-12-12 15:24:32

Web Server單線程實現

2022-10-21 14:21:46

JavaScript筆記技能

2010-01-08 15:41:36

VB.NET窗口關閉

2022-06-28 08:17:10

JSON性能反射
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 范冰冰一级做a爰片久久毛片 | 久久99精品国产自在现线小黄鸭 | 91在线视频免费观看 | 国产一区二区精品在线观看 | 91日韩在线 | 亚洲精品欧美一区二区三区 | 国产在线观看一区二区 | 欧美日韩高清在线一区 | 久久99精品国产99久久6男男 | 久久成人久久 | 天天影视网天天综合色在线播放 | 久久综合香蕉 | 国产精品亚洲一区二区三区在线 | 日韩欧美在线视频 | 亚洲激情第一页 | 欧美综合视频在线 | 国产精品大全 | 国产黄色在线 | 天天操夜夜操 | 中文在线a在线 | 久久日韩精品一区二区三区 | 欧美四虎| 亚洲视频中文字幕 | 国产激情91久久精品导航 | 日韩在线成人 | av黄色国产 | 亚洲天堂成人在线视频 | 精品一区电影 | 青青久在线视频 | 国产免费一区二区三区网站免费 | 精品一区视频 | 亚洲福利在线观看 | 中文成人在线 | 国产高清精品一区 | 午夜精品一区二区三区在线观看 | 成人欧美一区二区三区1314 | 国产精品呻吟久久av凹凸 | 免费看日韩视频 | 国产精品久久久久久久久久软件 | 欧美啪啪网站 | 国产精品久久亚洲 |