自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Cocoa 基本原理指南 開發(fā)環(huán)境

移動開發(fā) iOS
本文介紹的是Cocoa 基本原理指南 開發(fā)環(huán)境,Xcode和Interface Builder是開發(fā)Cooca軟件優(yōu)先使用的工具。先來看本文詳細介紹。

Cocoa有它自己的開發(fā)環(huán)境并不十分精確。一個原因是程序員可以使用蘋果主要的開發(fā)工具—Xcode和Interface Builder—來開發(fā)Mac OS X其它應(yīng)用程序環(huán)境的程序,比如Carbon;其次,開發(fā)Cocoa應(yīng)用程序時完全不使用Xcode和Interface Builder也是可能的,比如,您可以使用Metrowerks的CodeWarrior來管理、編譯、和調(diào)試Cocoa工程;而且,如果您實在不愿意改變,也可以使用像Emacs這樣的文本編輯器來編寫代碼,用make file和命令行進行應(yīng)用程序的連編,然后在命令行上通過gdb調(diào)試器來調(diào)試程序。

但是,Xcode和Interface Builder是開發(fā)Cooca軟件優(yōu)先使用的工具。它們的起源正好和Cocoa是一致的,所以在工具和框架之間存在高度的兼容性。Xcode和Interface Builder一起,使設(shè)計、管理、連編、和調(diào)試Cocoa軟件工程變得非常容易。還有一個叫AppleScript Studio的工具,可以擴展應(yīng)用程序的能力,您可以通過這個工具來創(chuàng)建具有腳本能力的Cocoa程序和通過AppleScript控制其它應(yīng)用程序的程序。

Xcode

Xcode是蘋果公司在Mac OS X下的集成開發(fā)環(huán)境(IDE)引擎。它負責處理從最開始到工程的最終部署這一過程中的大多數(shù)細節(jié)。您可以通過這個工具來完成如下工作:

創(chuàng)建和管理工程,包括指定目標的需求、依賴性、和連編的風(fēng)格。

在具有語法染色、自動縮進等功能的編輯器上編寫源代碼。

在工程的不同組件中進行漫游和檢索,包括頭文件和文檔。

連編工程

在圖形化的源代碼級調(diào)試器上調(diào)試工程

Xcode可以連編由C、C++、Objective-C、Objective-C++、和Java編寫的源代碼組成的工程,可以生成Mac OS X支持的所有類型的執(zhí)行代碼,包括命令行工具、框架、插件、內(nèi)核擴展、程序包、和應(yīng)用程序。Xcode允許您對連編和調(diào)試工具、可執(zhí)行文件的打包方式(包括信息屬性列表和本地化程序包)、連編過程(包括拷貝文件、腳本文件處理、和其它連編階段)、以及用戶界面(包括分立和多視圖的代碼編輯器)進行幾乎無限的定制;還支持幾個源代碼管理系統(tǒng)(其中有CVS和Perforce),使您可以將文件追加到代碼庫、提交修改、獲取更新版本、以及進行版本的比較。

圖1-4顯示一個Xcode工程的實例。

Cocoa 基本原理指南 開發(fā)環(huán)境

圖1-4  Xcode中的TextEdit實例

Xcode特別適合用于Cocoa開發(fā)。在創(chuàng)建工程時,Xcode可以通過對應(yīng)于Cocoa工程類型的工程模板,為您建立一個初始的開發(fā)環(huán)境。Cocoa工程類型有:應(yīng)用程序(Objective-C或Java)、基于文檔的應(yīng)用程序(Objective-C或Java)、工具、程序包、和框架。Xcode使用GNU C編譯器(gcc)來編譯Cocoa軟件,使用GNU源代碼級調(diào)試器(gdb)來調(diào)試軟件。在Cocoa開發(fā)中使用gcc和gdb從它還是NeXTSTEP(參見"一點歷史"部分)的時代就開始了。對Cocoa二進制代碼的編譯和調(diào)試經(jīng)過多年的精化、擴展、和調(diào)優(yōu)。

Xcode也有一個類瀏覽的功能,可以查看所有導(dǎo)入的Cocoa框架類和您自己的定制類,還有它們的繼承關(guān)系;從類瀏覽器中,您可以請求查看任何類的文檔。Xcode還包含一些設(shè)計工具,其中有一個工具可以用于設(shè)計Core Data程序中使用的數(shù)據(jù)實體的屬性和關(guān)系。

Xcode和另外一個主要的開發(fā)工具Interface Builder良好地集成在一起。在Interface Builder中,您可以定義一個類(包括超類,插座變量,和動作),并為工程中的每個類生成源代碼文件的框架。在Xcode中,您可以為定制類添加插座變量和動作,然后讓Interface Builder將這些實體導(dǎo)入到nib文件中。

請注意:簡單地說,插座變量(outlet)是一個對象和另一個對象的歸檔連接(表示為對象中的一個實例變量);動作則是當按鍵或滑塊這類對象被操作時,在被稱為目標(target)的對象(通常是一個定制對象)中被調(diào)用的方法。Interface Builder也會把目標對象和其它對象(稱為控件)之間的連接進行歸檔。

進一步閱讀:Xcode快速指南可以使您概覽Xcode,并為您提供其它開發(fā)工具文檔的連接。

  1. Interface Builder 

Cocoa工程的第二個主要開發(fā)工具是Interface Builder。顧名思義,Interface Builder是用于創(chuàng)建用戶界面的圖形工具。Interface Builder在Cocoa還是NeXTSTEP的時候就已經(jīng)存在了,而且從那時侯起,它就作為同類軟件中的佼佼者而獲得廣泛的認可。很自然,它和Cocoa的結(jié)合是很緊密的。而且您也可以用它來為Carbon應(yīng)用程序創(chuàng)建用戶界面。

Interface Builder以三個主要的設(shè)計元素為中心:

Nib文件。nib文件實際上是以檔案的形式對用戶界面中出現(xiàn)的對象進行文件包裝(一個封裝的目錄)。這種檔案本質(zhì)上是一種對象圖,包含每個對象的信息,包括對象的尺寸及在其屏幕(如果是個窗口)或窗口內(nèi)的位置信息。Cocoa應(yīng)用程序中的Nib文件還包含定制類的代理引用和對象間連接信息,包括使用Cocoa綁定技術(shù)建立起來的連接。當您在Interface Builder中創(chuàng)建并保存一個用戶界面時,重建該界面需要的所有信息都會被存在nib文件中。nib文件還可以包含界面中使用的圖像和聲音文件。

Interface Builder將nib文件存儲在Cocoa工程中的一個本地化目錄下。在連編工程時,nib文件就會被拷貝到新建的程序包中對應(yīng)的本地化目錄下(nib文件因此可以提供一種很好的用戶界面本地化方法)。 Cocoa應(yīng)用程序缺省(也就是說Xcode會自動創(chuàng)建)有一個主nib文件,在運行時自動被裝載和顯示。主nib文件包含應(yīng)用程序的主菜單,并可能有一個或多個窗口。您的應(yīng)用程序可以根據(jù)需要裝載輔助的nib文件,比如文檔或預(yù)置窗口所在的文件。

Interface Builder將nib文件的內(nèi)容表示在nib文件窗口中。您也可以在nib文件窗口中定義定制類及考察對象之間的連接。

選盤。 Interface Builder的選盤(Palette)窗口中包含多個面板,或者稱為“選盤”,每個選盤中包含一個彼此有關(guān)系的用戶界面對象的集合。將對象從選盤拖拽到恰當?shù)奈恢蒙暇涂梢詣?chuàng)建用戶界面了,這里的位置可以是屏幕、窗口、各種視圖、或者主菜單(選盤對象自身不一定是可見的,但是必須以某種形式影響用戶界面)。當您將一個對象從選盤上拖出時,Interface Builder會實例化一個該對象的缺省實例。這個實例是一個真正的Cocoa對象,而不是運行時需要創(chuàng)建的實例的代理對象。如果您愿意的話,可以將您自己的定制對象放在選盤上。

查看器。 Interface Builder為用戶界面上的對象提供一個查看器(稱為Info窗口)。Info窗口由一系列可選擇的面板組成,用于設(shè)置對象的初始屬性和尺寸(雖然尺寸和很多屬性也可以直接進行操作)。其中的兩個面板用于建立對象之間的連接,一個基于插座變量和動作,另一個基于綁定技術(shù)。還有一個面板用于將定制類代替Application Kit框架中的超類。其它面板較為特殊,專用于建立用戶界面對象和幫助標簽及AppleScript事件處理器之間的關(guān)聯(lián)。

圖1-5顯示了一個在Interface Builder中打開的nib文件,以及支持窗口。

Cocoa 基本原理指南 開發(fā)環(huán)境

圖1-5  Interface Builder中TextEdit的預(yù)置窗口

用Interface Builder創(chuàng)建用戶界面的步驟比較直接:

將窗口或面板拖拽到屏幕上(面板等同于對話框或輔助窗口)。

設(shè)置窗口的初始(或固定的)位置、尺寸、和屬性。

將文本框、按鍵、表視圖控件、和彈出式列表等對象拖到窗口或之前放好的視圖對象上。

為這些對象設(shè)置初始(或固定的)位置、尺寸、和屬性。

為應(yīng)用程序定義定制類。

您可以直接在Interface Builder中完成這個工作,或者將事先創(chuàng)建好的頭文件裝載到Interface Builder。在進行類的定制時,可以通過Interface Builder指定插座變量和動作。

在對象之間建立綁定和連接。這有兩種形式:

在應(yīng)用程序的視圖、控制器、和模型對象之間建立綁定關(guān)系。

把插座變量連接到它們引用的對象,接著把動作連接到目標對象中合適的方法上。

保存和測試用戶界面。 Interface Builder有一個功能,可以在設(shè)計的各個階段測試界面(定制的行為除外)。

為您定義的各個定制類創(chuàng)建頭文件和源代碼文件,這些文件會出現(xiàn)在關(guān)聯(lián)的Xcode工程上。

Interface Builder還包含一個功能:在對一個擺好位置的對象進行移動或調(diào)整其尺寸時,會通過一些短暫出現(xiàn)的藍線來顯示當前位置是否遵循Aqua人機界面指南,包括推薦的尺寸、對齊、與用戶界面上的其它對象或窗口邊界的相對位置。

進一步閱讀:有關(guān)用戶界面開發(fā)工具的進一步信息,請參見Interface Builder部分。此外,"Nib文件"部分給出了nib文件及其在應(yīng)用程序中如何被使用的更多信息。您還可以參考"對象之間的通訊"部分,以概要了解插座變量、目標-動作機制、以及Cocoa綁定技術(shù)。

AppleScript Studio

多年來,Mac OS一直有一個定義良好的特性,就是用戶可以通過由AppleScript語言寫成的腳本控制應(yīng)用程序。很多用戶發(fā)現(xiàn)這個特性是不可或缺的,因為它可以將涉及多個應(yīng)用程序的復(fù)雜操作序列串接在一起。AppleScript的能力在Mac OS X系統(tǒng)上更進了一步。AppleScript Studio是一種開發(fā)技術(shù),用于創(chuàng)建通過AppleScript腳本控制復(fù)雜用戶界面的Cocoa程序。

AppleScript Studio把來自AppleScript、Xcode、Interface Builder、和Cocoa的各種元素結(jié)合起來,提供了一個創(chuàng)建AppleScript解決方案的開發(fā)環(huán)境。您可以通過它來制作應(yīng)用程序,完成如下任務(wù):

執(zhí)行AppleScript腳本

控制應(yīng)用程序的界面

控制具有腳本能力的應(yīng)用程序或操作系統(tǒng)中支持腳本的部分

由于AppleScript Studio將AppleScript和Xcode、Interface Builder、和Cocoa集成在一起,腳本編程者可以利用這些組件各自的優(yōu)勢和能力。他們可以從Interface Builder選盤中拖出一組豐富的用戶界面對象,根據(jù)個人的喜好進行定制;可以得到內(nèi)置的Aqua用戶界面指南的支持;還能夠連編和維護帶有多個目標和連編步驟的的復(fù)雜工程。

這個開發(fā)環(huán)境使我們有可能通過腳本對Script Editor程序(它是創(chuàng)建AppleScript腳本的傳統(tǒng)工具)不能提供的能力進行控制,這些能力包括:

創(chuàng)建任意大的腳本

在腳本中進行檢索和替代

單步腳本調(diào)試,支持各種執(zhí)行方式

方便訪問腳本中的處理函數(shù)和屬性

靈活的字典查看器,和應(yīng)用程序的腳本用語一起使用。

進一步閱讀:更多信息請參見AppleScript Studio編程指南。

其它開發(fā)工具

雖然Xcode和Interface Builder是開發(fā)Cocoa應(yīng)用程序的主要工具,但是還有許多工具可以使用。在一些應(yīng)用程序開發(fā)階段中,您可能會找到很多輔助的應(yīng)用程序和命令行工具。

這個部分將回顧一些輔助性的開發(fā)工具并簡短地討論一些命令行工具,然而命令行工具的數(shù)量太多,即使對它們進行一個濃縮的總結(jié)也超出了本文的范圍。您的最好選擇就是訪問/usr/bin和/usr/sbin目錄下各種工具的使用手冊(man頁面),只要在Terminal外殼下鍵入man命令,后面跟著命令名稱就可以了。在/Developer/Tools目錄下還有一些蘋果開發(fā)的命令行工具。

性能工具

下面這些應(yīng)用程序用于軟件性能的測量和分析。它們位于/Developer/Applications目錄下。

Sampler 用于分析程序運行時的行為和內(nèi)存分配。顧名思義,Sampler會按一定的時間周期對程序的函數(shù)調(diào)用棧進行采樣,并在采樣結(jié)束時向您顯示調(diào)用頻率最高的函數(shù)或方法。這種信息有助于定位消耗大量CPU時間或進行內(nèi)存分配的函數(shù)或方法。

ObjectAlloc 用于跟蹤各種程序的內(nèi)存分配與釋放行為。這種歷史數(shù)據(jù)可以顯示重復(fù)的內(nèi)存分配行為和總體的分配趨勢。對于Objective-C代碼,ObjectAlloc在記錄alloc調(diào)用的同時,也記錄每個copy、retain、release、autorelease調(diào)用,而且還記錄在Core Foundation中與這些方法相對應(yīng)的函數(shù),以及malloc(及相關(guān))函數(shù)進行的內(nèi)存分配。

MallocDebug 按分配時的調(diào)用棧順序顯示程序中當前已分配的內(nèi)存塊。通過這個工具一下子就可以看到您的應(yīng)用程序消耗多少內(nèi)存、這些內(nèi)存是從哪里分配的、以及哪些函數(shù)分配了大量的內(nèi)存。MallocDebug還可以找出在程序中分配的、卻沒有被引用的內(nèi)存,因此可以幫助您發(fā)現(xiàn)內(nèi)存泄露并跟蹤這些泄露的內(nèi)存是在哪里分配的。

QuartzDebug 是一個幫助您對應(yīng)用程序的顯示機制進行調(diào)試的工具,對大量進行描畫和圖像處理的應(yīng)用程序特別有用。QuartzDebug包括如下幾個調(diào)試選項:

自動閃爍描畫模式,這種模式會在每個描畫操作之后閃爍一下圖形上下文。

在更新屏幕區(qū)域之前先用黃色對該區(qū)域進行描畫的模式。

用于取得整個系統(tǒng)的窗口列表的靜態(tài)快照,同時給出每個窗口的擁有者及該窗口消耗多少內(nèi)存的選項。

Thread Viewer 顯示一個進程中各個線程的活動。這個工具顯示每個線程的活動時間線,動作在時間線上用不同的顏色表示。點擊時間線可以得到與點擊位置相對應(yīng)的活動回溯樣本。
還有一些命令行工具可以用于性能分析,比如:

top,對當前正在運行的進程進行采樣統(tǒng)計并顯示統(tǒng)計結(jié)果。

gprof,用于產(chǎn)生程序的執(zhí)行輪廓

fs_usage,顯示文件系統(tǒng)訪問的統(tǒng)計信息

還有其它很多命令行工具可以用于性能分析。有關(guān)Cocoa應(yīng)用程序開發(fā)可以用哪些性能分析工具以及性能分析的概念、技術(shù)、和策略的更多信息,請參見性能編程主題(Performance Programming Topics)文檔。

請注意:性能概述對Mac OS X的性能工具進行討論。

其它工具

您還可以發(fā)現(xiàn)下面的工具對Cocoa應(yīng)用程序開發(fā)很有用(位于/Developer/Applications目錄下):

Icon Composer和Icns Browser 您可以用Icon Composer來導(dǎo)入各種格式的圖像,創(chuàng)建應(yīng)用程序圖標和文檔圖標的圖標文件;還可以用Icns Browser程序來創(chuàng)建不同尺寸、位深度、和位掩碼的圖標變體。

FileMerge 這個工具可以可視化地“diffs” 各種文本文件(比如源代碼文件、頭文件、和屬性列表),并具有選擇合并的能力。Package Maker 通過Installer程序為應(yīng)用程序(其它類型的軟件)制作安裝包。Property List Editor 這是一個編輯器,用于創(chuàng)建和編輯XML及較老風(fēng)格的屬性列表。

小結(jié):關(guān)于Cocoa 基本原理指南 開發(fā)環(huán)境的內(nèi)容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-07 14:10:21

Cocoa 內(nèi)省 hash

2011-07-07 13:30:32

Cocoa Core

2011-07-07 14:22:27

Cocoa 對象 生命周期

2011-08-10 19:33:09

Cocoa對象

2012-01-12 14:37:34

jQuery

2009-02-24 09:43:00

IP電話原理

2011-11-29 12:17:00

2016-08-18 00:04:09

網(wǎng)絡(luò)爬蟲抓取系統(tǒng)服務(wù)器

2010-08-20 13:29:33

OFDM

2020-03-21 14:57:14

手機定位智能手機APP

2013-04-07 14:09:55

Android應(yīng)用基本

2019-11-28 10:45:28

ZooKeeper源碼分布式

2016-08-17 23:53:29

網(wǎng)絡(luò)爬蟲抓取系統(tǒng)

2021-02-08 21:40:04

SockmapBPF存儲

2020-12-29 16:55:44

ZooKeeper運維數(shù)據(jù)結(jié)構(gòu)

2009-06-11 09:56:09

MySQL Repli原理

2010-03-17 13:35:02

2010-03-18 20:13:03

Java socket

2011-06-17 15:57:46

CocoaXcode蘋果

2019-04-30 08:15:31

點贊
收藏

51CTO技術(shù)棧公眾號