真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

學習AboutiOSAppProgramming第三天-創(chuàng)新互聯(lián)

學習 About iOS App Programming 第三天

10年積累的成都網(wǎng)站建設、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有梁山免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

-------State Preservation and Restoration

    即使我們的app能支持后臺運行,但它也不能一直在后臺運行,有一些情況,系統(tǒng)也許會需要終止app,為了釋放內(nèi)存給在前臺運行的app。但是用戶不關心app是不是被關閉,用戶只知道這個app應用就是這個地方暫停了,當再次起來時應該就在上一次退出的地方。這樣用戶能繼續(xù)進行他上次沒有完成的任務。因此UIKit實現(xiàn)了這種功能。

    UIKit的狀態(tài)保存系統(tǒng)提供了一個簡單同時比較精準的基礎技術對于保存和恢復app viewcontroller狀態(tài)。這個基礎技術的作用是控制保存和恢復進程在適當?shù)臅r候進行。為了做那,UIKit需要開發(fā)者對這個app,開發(fā)只要知道app的內(nèi)容就行了,其他系統(tǒng)就幫開發(fā)做完了。

    當前頁面的保存和恢復必須要app對這兩種機制進行支持,因此app必須在本質(zhì)上支持UIKit,同時能讓UIKit操作app狀態(tài)的保存和恢復在適當?shù)臅r候。因為UIKit要能實現(xiàn)這樣的操作,需要操作比較多的方法。

    在兩種情況下,就要用到app狀態(tài)保存和恢復。app狀態(tài)的保存一般發(fā)生在app退到后臺的時候。在那個時候,UIKit需要知道你的這個app的view和viewControl需要不需要保存。對于每次保存,UIkit都把需要保存的相關數(shù)據(jù)保存在磁盤上。但app再次啟動時,app將磁盤中找到上次保存的數(shù)據(jù),并這些數(shù)據(jù)恢復。在重新創(chuàng)建當前對象時,需要操作viewControllerz中的代碼,因為app可能需要去加載對象從storyboard動態(tài)的加載文件。因為這個加載過程只有我們自己的代碼知道。

在app狀態(tài)的保存和恢復過程中,app有少量的事情要做。

    在app狀態(tài)保存時,app需要做這樣一些事:

    告訴UIKIt該app支持狀態(tài)保存。

    告訴那些view和viewController需要保存。

    對相應的數(shù)據(jù)進行編碼。

    在數(shù)據(jù)恢復時,app需要做的事:

    告訴UIKit需要支持數(shù)據(jù)恢復。

    提供(創(chuàng)建)UIKit恢復數(shù)據(jù)需要對象。

    解碼需要恢復對象和用它達到保存之前的狀態(tài)。
    app的任務,最主要的是告訴UIKit那些對象需要保存和需要提供那些對象在重新起來的隊列中。開發(fā)者需要花一些時間當設計app的狀態(tài)的保存和恢復代碼時。他們也有許多控制在當前過程中。

    UIKit僅僅保存那些有恢復id的對象,一個恢復ID是一個唯一字符串,用來標識view和viewControl。這個字符串的值是很重要僅僅對告訴UIkit那個對象需要保存,在保存過程中,UIkit將app需要的viewControler層次和保存所有有恢復ID的對象。如果一個viewController沒有恢復ID,則這個viewControler所有子類viewController都不能保存。

基于我們的app,它也許不是很清楚知道保存每一個viewController,如果viewController呈現(xiàn)一個斷續(xù)的消息,我們也許不希望達到這樣一個效果,反而更加希望選擇交互穩(wěn)定。

對每個viewcontroller開發(fā)者可以選著去保存,同時開發(fā)者也需要決定怎樣去恢復它,UIKit提供了兩種方式去重建這個對象,開發(fā)者可以讓我們appdelegate重新創(chuàng)建一個或者可以賦值一個恢復對象給viewcontroller和讓這類重建。

UIViewControllerRestoration協(xié)議和對找到或者創(chuàng)建一個指定對象在恢復時,下面是一個小的建議:

    1 如果一個viewcontroller經(jīng)常被加載從app的main storyboard文件在起來時,不要賦值一個恢復類。讓app代理找到對象或者用UIKit支持間接找到這個對象。

    2 對一個viewcontroller不會從mainstoryboard 文件中加載在起來時,賦值為一個恢復類。最簡單的選著是使沒有viewcontroller有他們自己的恢復類對應。

    在保存過程,UIKit標志化對象將保存和記錄下每一個與之相關對象狀態(tài)到磁盤中。每一個viewcontroller對象都又一次機會寫出記錄出那些需要保存數(shù)據(jù)。比如,當一個tableview需要保存當時選著的tablecell,UIKit也保存一些信息比如viewcontroller的恢復類,和如果有恢復id,UIKit要求保存他們狀態(tài)信息。

當app再次起來時,UIKit加載app的main storyBoard或者nib文件通常,調(diào)用app的代理方式application:willFinishLaunchingWithOptions:方法,然而會去恢復以前保存的狀態(tài)。第一件做的事是請求app提供一些viewcontroller對象那些之前保存的對象。如取到了viewcontroller類,則就恢復頁面。

要想實現(xiàn)狀態(tài)保存和恢復需要完成以下工作:

1 必須實現(xiàn)application:shouldSaveApplicationState: and application:shouldRestore

ApplicationState:這兩個代理方法,

    2 需要對每一個viewcontroller賦值一個非空得字符串作為恢復id。

    3 如想保存一個特定view的狀態(tài),賦值一個飛空字符串給他們restorationIdentifier的屬性

    4 分配一個恢復類給一個合適的viewcontroller,(當app代理請求viewcontroller在恢復時)。

    5 viewcontroller的 序列化和反序列化使用encodeRestorableStateWithCoder:decodeRestorableStateWithCoder:方法。

  6 序列化和反序列化一些版本信息或者一些狀態(tài)信息針對于app,建議用application:willEncode-

RestorableStateWithCoder: 和application:didDecodeRestorableStateWithCoder:代理方法。

    7tableview和collectionview的數(shù)據(jù)源對象應該實現(xiàn)UIDataSourceModelAssociation 協(xié)議,雖然這個不是必要的,但是這個協(xié)議能幫助保存對應的view中得的選項。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


當前題目:學習AboutiOSAppProgramming第三天-創(chuàng)新互聯(lián)
瀏覽路徑:http://weahome.cn/article/dgcijs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部