溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iphone應(yīng)用程序開發(fā)指南(讀書筆記)

發(fā)布時(shí)間:2020-04-09 02:12:46 來源:網(wǎng)絡(luò) 閱讀:1474 作者:zz_yun 欄目:開發(fā)技術(shù)

UIKit框架負(fù)責(zé)管理大部分關(guān)鍵的基礎(chǔ)設(shè)施。UIApplication負(fù)責(zé)接收事件,響應(yīng)事件則需要你的定制代碼來處理。

委托是一種避免對復(fù)雜的UIKit對像,進(jìn)行子類化的機(jī)制。(關(guān)乎設(shè)計(jì)模式)

觸摸數(shù)據(jù)被封裝在時(shí)間對象(UIEvent)中,為了跟蹤觸摸動作,時(shí)間對象中包含一些觸摸對象(UITouch),每個觸摸對象對應(yīng)于一個正在觸摸屏幕的手指。

在啟動一個應(yīng)用程序時(shí),系統(tǒng)為程序創(chuàng)建一個進(jìn)程和一個單一的線程。

可以使用NSRunLoop類來安裝自己的輸入源,包括端口和定時(shí)器(多線程編程)

響應(yīng)者對象是繼承UIResponder類的對象。應(yīng)用程序的響應(yīng)者包括UIApplication,UIWindow,UIView,一級所有UIView的子類的實(shí)例。

控件對象(UIControl)

iphone的基本設(shè)計(jì)模式

模型-視圖-控制器(MVC)      委托      目標(biāo)-動作(就是連接button和對應(yīng)的函數(shù))   委托內(nèi)存模型(oc使用引用計(jì)數(shù)模式來確定什么時(shí)候應(yīng)該釋放內(nèi)存中的對象。一個對象,開始被創(chuàng)建,計(jì)數(shù)為1.然后retain,release,autorelease可以怎級啊或減少引用計(jì)數(shù)。當(dāng)引用計(jì)數(shù)為0,oc會清理例程)

程序退出時(shí)間不要超過5秒

將共享的UIApplication對象的idleTimerDisabled屬性設(shè)置為YES,就可以禁用自動休眠定時(shí)器。

Info.plist中的重要鍵值:

UIRequiresPersistentWiFi 這是個boolean值,用于通知系統(tǒng)應(yīng)用程序是否使用Wifi

UIApplicationDelegate協(xié)議

applicationDidFinishLaunching:將應(yīng)用程序恢復(fù)到上一個會話的狀態(tài)。也可以在這個方法中執(zhí)行應(yīng)用程序數(shù)據(jù)結(jié)構(gòu)和用戶界面的定制初始化。

applicationWillTerminate:將未存數(shù)據(jù)或者關(guān)鍵的應(yīng)用程序狀態(tài)存入磁盤。也可以執(zhí)行額外的清理工作,如刪除臨時(shí)文件。

當(dāng)有電話等程序進(jìn)來時(shí),會調(diào)用applicationWillResignActive:方法,讓用戶確定是否進(jìn)行新的任務(wù)。若用戶忽略,調(diào)用applicationDidBecomeActive:方法,重新繼續(xù)原來的程序。若用戶響應(yīng)新事件,則applicationWillTerminate:方法。

接受低內(nèi)存警告:(理論上必須要有的)

在委托中實(shí)現(xiàn)applicationDidReceiveMemoryWarning:方法。

在UIViewController子類中,實(shí)現(xiàn)didReceiveMemoryWarning方法

注冊UIApplicationDidReceiveMemoryWarningNotification通知。

景觀模式+肖像模式(橫屏豎屏的問題)

Info.plist文件中加入U(xiǎn)IInterfaceOrientation鍵,設(shè)為景觀模式:UIInterfaceOrientationLandscapeLeft或者UIInterfaceOrientationLandscapeRight

或者重載shouldAutorotateToInterfaceOrientation:方法。

和其他應(yīng)用程序通訊:使用NSURL。(不是太理解,不大符合常理。是說用socket通訊?)

NSURL *myURL = [NSURL

URLWithString:@"todolist://www.acme.com?Quarterly%20Report#200806231300"];

[[UIApplication sharedApplication] openURL:myURL]; 

 

如果您選擇在應(yīng)用程序內(nèi)進(jìn)行偏好設(shè)置管理,則可以自行定義用戶界面及編寫代碼來實(shí)現(xiàn)。

但是,如果您選擇使用Settings 程序,則必須提供一個設(shè)置包(Settings Bundle)來進(jìn)行管理。

 

將共享的UIApplication 對象的idleTimerDisabled 屬性設(shè)置為YES,就可以禁止屏幕鎖定。 

國際化--我們約定,本地化語言子目錄稱為lproj 文件夾。舉例來說,如果要指定美國英語的本地化資源,程序包中的子目錄應(yīng)該命名為en_US.lproj。

 

主線程是應(yīng)用程序處理觸摸事件和其它用戶輸入的地方。為了確保應(yīng)用程序總是可以響應(yīng)用戶,我們不應(yīng)該在主線程中執(zhí)行運(yùn)行時(shí)間很長或可能無限等待的任務(wù),比如訪問網(wǎng)絡(luò)的任務(wù)。相反,您應(yīng)該將這些任務(wù)放在后臺線程。一個推薦的方法是將每個任務(wù)都封裝在一個操作對象中(具體是什么意思,大哥,不懂?。?,然后加入操作隊(duì)列。當(dāng)然,您也可以自己創(chuàng)建顯式的線程。

 

 

由于iPhone OS 的虛存模型并不包含磁盤交換區(qū)空間,所以應(yīng)用程序在更大程度上受限于可供使用的內(nèi)存

 

消除內(nèi)存泄露:可以用Instruments 程序來跟蹤代碼中的泄露

使資源文件盡可能小:您可以通過NSPropertyListSerialization 類將屬性列表

文件存儲為二進(jìn)制格式;對于圖像,可以將所有圖像文件壓縮得盡可能?。≒NG 圖像是iPhone應(yīng)用程序的推薦圖像格式,可以用pngcrush 工具來進(jìn)行壓縮)。

 

使用Core Data 或SQLite 來處理大的數(shù)據(jù)集合

延緩裝載資源

將程序連編為Thumb 格式

 

減少自動釋放對象的使用:通過autorelease 方法釋放的對象會留在內(nèi)存中,直到顯式清理自動釋放池或者程序再次回到事件循環(huán)。在任何可能的時(shí)候,請避免使用autorelease 方法,而是通過release 方法立即收回對象占用的空間。

 

為資源設(shè)置尺寸限制:您可以通過mmap 和munmap 函數(shù)來將文件的一部分載入內(nèi)存或從內(nèi)存卸載,而不是操作整個文件

 

避免無邊界的問題集

 

 

 

 

如果您的代碼確實(shí)廣泛地使用浮點(diǎn)數(shù)計(jì)算,請記住不要使用-mthumb 選項(xiàng)來編譯代碼。Thumb 選項(xiàng)可以減少代碼模塊的尺寸,但是也會降低浮點(diǎn)計(jì)算代碼的性能。

 

您應(yīng)該總是采用InstrumentsShark 工具對應(yīng)用程序的算法進(jìn)行優(yōu)化

 

避免需要輪詢的工作,因?yàn)檩喸儠柚笴PU 進(jìn)入休眠狀態(tài)。您可以通過NSRunLoop 或者NSTimer 類來規(guī)劃需要做的工作,而不是使用輪詢。盡一切可能使共享的UIApplication 對象的idleTimerDisabled 屬性值保持為NO。當(dāng)設(shè)備處于不活動狀態(tài)一段時(shí)間后,空閑定時(shí)器會關(guān)閉設(shè)備的屏幕

 

僅在需要的時(shí)候連接外部網(wǎng)絡(luò),不要對服務(wù)器進(jìn)行輪詢。

當(dāng)您需要連接網(wǎng)絡(luò)時(shí),請僅傳遞完成工作所需要的最少數(shù)據(jù)。請使用緊湊的數(shù)據(jù)格式,不要包含可被簡單忽略的額外數(shù)據(jù)。

盡可能快地以群發(fā)(in burst)方式傳遞數(shù)據(jù)包,而不是拉長數(shù)據(jù)傳輸?shù)臅r(shí)間。當(dāng)系統(tǒng)檢測到

設(shè)備沒有活動時(shí),就會關(guān)閉Wi-Fi 和蜂窩無線信號。您的應(yīng)用程序以較長時(shí)間傳輸數(shù)據(jù)比以較短時(shí)間傳輸同樣數(shù)量的數(shù)據(jù)要消耗更多的電能。

盡可能通過Wi-Fi 無線信號連接網(wǎng)絡(luò)。Wi-Fi 耗電比基帶無線少,是推薦的方式。

 屏幕矩形可以通過UIScreen 對象來取得,具體代碼如下所示:

UIWindow* aWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

 

iphone應(yīng)用程序開發(fā)指南(讀書筆記)

。一個屏幕的視圖后面是一個視圖控制器其作用是管理那些視圖上顯示的數(shù)據(jù),并協(xié)調(diào)它們和應(yīng)用程序其它部分的關(guān)系。

如果視圖被標(biāo)識為需要重新布局,UIKit 就調(diào)用視圖的layoutSubviews 方法。

如果視圖的任何部分被標(biāo)識為需要重畫,UIKit 就調(diào)用該視圖的drawRect:方法?!?/p>

下面這些事件處理方法:

touchesBegan:withEvent:

touchesMoved:withEvent:

touchesEnded:withEvent:

touchesCancelled:withEvent:

layoutSubviews 方法

drawRect:方法

 

 

 

 

 

 

 

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI