- 相關(guān)推薦
iPhone軟件開發(fā)面試題(3)
26.cocoa touch框架
iPhoneOS 應(yīng)用程序的基礎(chǔ) Cocoa Touch 框架重用了許多 Mac 系統(tǒng)的成熟模式,但是它更多地專注于觸摸的接口和優(yōu)化。UIKit 為您提供了在 iPhone OS 上實現(xiàn)圖形,事件驅(qū)動程序的基本工具,其建立在和 Mac OS X 中一樣的Foundation 框架上,包括文件處理,網(wǎng)絡(luò),字符串操作等。
CocoaTouch 具有和 iPhone 用戶接口一致的特殊設(shè)計。有了 UIKit,您可以使用 iPhone OS 上的獨特的圖形接口控件,按鈕,以及全屏視圖的功能,您還可以使用加速儀和多點觸摸手勢來控制您的應(yīng)用。
各色俱全的框架 除了 UIKit 外,Cocoa Touch 包含了創(chuàng)建世界一流 iPhone 應(yīng)用程序需要的所有框架,從三維圖形,到專業(yè)音效,甚至提供設(shè)備訪問 API 以控制攝像頭,或通過 GPS 獲知當(dāng)前位置。Cocoa Touch 既包含只需要幾行代碼就可以完成全部任務(wù)的強大的 Objective-C 框架,也在需要時提供基礎(chǔ)的 C 語言 API 來直接訪問系統(tǒng)。這些框架包括:
Core Animation
通過 Core Animation,您就可以通過一個基于組合獨立圖層的簡單的編程模型來創(chuàng)建豐富的用戶體驗。
Core Audio
Core Audio 是播放,處理和錄制音頻的專業(yè)技術(shù),能夠輕松為您的應(yīng)用程序添加強大的音頻功能。
Core Data
提供了一個面向?qū)ο蟮臄?shù)據(jù)管理解決方案,它易于使用和理解,甚至可處理任何應(yīng)用 或大或小的數(shù)據(jù)模型。
功能列表:框架分類
下面是 Cocoa Touch 中一小部分可用的框架:
音頻和視頻
Core Audio
OpenAL
Media Library
AV Foundation
數(shù)據(jù)管理
Core Data
SQLite
圖形和動畫
Core Animation
OpenGL ES
Quartz 2D
網(wǎng)絡(luò)/li>
Bonjour
WebKit
BSD Sockets
用戶應(yīng)用
Address Book
Core Location
Map Kit
Store Kit
27.objc的內(nèi)存管理
如果您通過分配和初始化(比如[[MyClass alloc] init])的方式來創(chuàng)建對象,您就擁有這個對象,需要負責(zé)該對象的釋放。這個規(guī)則在使用NSObject的便利方法new 時也同樣適用。
如果您拷貝一個對象,您也擁有拷貝得到的對象,需要負責(zé)該對象的釋放。
如果您保持一個對象,您就部分擁有這個對象,需要在不再使用時釋放該對象。
反過來,如果您從其它對象那里接收到一個對象,則您不擁有該對象,也不應(yīng)該釋放它(這個規(guī)則有少數(shù)的例外,在參考文檔中有顯式的說明)。
28.自動釋放池是什么,如何工作
當(dāng)您向一個對象發(fā)送一個autorelease消息時,Cocoa就會將該對象的一個引用放入到最新的自動釋放池。它仍然是個正當(dāng)?shù)膶ο,因此自動釋放池定義的作用域內(nèi)的其它對象可以向它發(fā)送消息。當(dāng)程序執(zhí)行到作用域結(jié)束的位置時,自動釋放池就會被釋放,池中的所有對象也就被釋放。
1. ojc-c 是通過一種"referring counting"(引用計數(shù))的方式來管理內(nèi)存的, 對象在開始分配內(nèi)存(alloc)的時候引用計數(shù)為一,以后每當(dāng)碰到有copy,retain的時候引用計數(shù)都會加一, 每當(dāng)碰到release和autorelease的時候引用計數(shù)就會減一,如果此對象的計數(shù)變?yōu)榱?, 就會被系統(tǒng)銷毀.?2. NSAutoreleasePool 就是用來做引用計數(shù)的管理工作的,這個東西一般不用你管的.?
3. autorelease和release沒什么區(qū)別,只是引用計數(shù)減一的時機不同而已,autorelease會在對象的使用真正結(jié)束的時候才做引用計數(shù)減一.
29.類工廠方法是什么
類工廠方法的實現(xiàn)是為了向客戶提供方便,它們將分配和初始化合在一個步驟中,返回被創(chuàng)建的對象,并進行自動釋放處理。這些方法的形式是 (type)className...(其中 className不包括任何前綴)。
工廠方法可能不僅僅為了方便使用。它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對象的分配信息。
類工廠方法的另一個目的是使類(比如NSWorkspace)提供單件實例。雖然init...方法可以確認一個類在每次程序運行過程只存在一個實例,但它需要首先分配一個“生的”實例,然后還必須釋放該實例。工廠方法則可以避免為可能沒有用的對象盲目分配內(nèi)存。
30.單件實例是什么
Foundation和 Application Kit 框架中的一些類只允許創(chuàng)建單件對象,即這些類在當(dāng)前進程中的唯一實例。舉例來說,NSFileManager 和NSWorkspace 類在使用時都是基于進程進行單件對象的實例化。當(dāng)向這些類請求實例的時候,它們會向您傳遞單一實例的一個引用,如果該實例還不存在,則首先進行實例的分配和初始化。 單件對象充當(dāng)控制中心的角色,負責(zé)指引或協(xié)調(diào)類的各種服務(wù)。如果類在概念上只有一個實例(比如NSWorkspace),就應(yīng)該產(chǎn)生一個單件實例,而不是多個實例;如果將來某一天可能有多個實例,您可以使用單件實例機制,而不是工廠方法或函數(shù)。
【iPhone軟件開發(fā)面試題(3)】相關(guān)文章:
iPhone軟件開發(fā)面試題10-23
Microsoft面試題09-04
iOS面試題07-10
公司面試題09-12
iphone鎖屏密碼忘了怎么辦07-10
hibernate面試題10-18
英語面試題精選06-13
小升初面試題06-10
PHP面試題10-14
小升初面試題型08-24