freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

objectivec20程序設(shè)計(jì)第19章歸-資料下載頁

2025-01-12 20:39本頁面
  

【正文】 Book、 AddressCard和 Foo類實(shí)現(xiàn)了編碼方法和解碼方法(理解這個(gè)概念很重要) ? 在歸檔這兩個(gè)對(duì)象時(shí),向 archiver對(duì)象發(fā)送一條 finishEncoding消息。之后,就不能編碼其他對(duì)象,你需要發(fā)送此消息以完成歸檔過程。 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 ? 此時(shí),你預(yù)留的那塊名為 dataArea的空間包含歸檔對(duì)象,這些對(duì)象可以一種可寫入文件的格式存在。消息表達(dá)式 [data writeToFile: @” myArchive” atomically: YES] 向你的數(shù)據(jù)流發(fā)送 writeToFile:atomically:消息,請(qǐng)求它把它的數(shù)據(jù)寫人指定文件, 這個(gè)文件名為 myArchive。 ? 從 if語句可以看到 writeToFile:atomically:方法返回一個(gè) BOOL值:如果寫 操作成功就返回 YES,如果失?。赡苁侵付藷o效的路徑名或文件系統(tǒng)已滿)就返回 NO。 ? 從檔案文件中恢復(fù)數(shù)據(jù)很簡(jiǎn)單 —— 所做的工作只需和歸檔文件相反,首先,需要像以前那 樣分配一個(gè)數(shù)據(jù)空間。然后,把擋案文件中的數(shù)據(jù)讀入該數(shù)據(jù)空間,然后,需要?jiǎng)?chuàng)建一個(gè) NSKeyedUnarchiver對(duì)象,并告知它從指定空間解碼數(shù)據(jù)。必須調(diào)用解碼方法來提取和解碼歸 檔的對(duì)象,做完之后,向NSKeyedUnarchiver對(duì)象發(fā)送一條 finishDecoding消息 代碼清單 1910實(shí)現(xiàn)了所有任務(wù)。 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 Program import Foundation/ import Foundation/ import Foundation/ import Foundation/ import Foundation/ import Foundation/ import “ ” import “ ” int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]。 NSData *dataArea。 NSKeyedUnarchiver *unarchiver。 Foo *myFoo1。 AddressBook *myBook。 // Read in the archive and connect an // NSKeyedUnarchiver object to it dataArea = [NSData dataWithContentsOfFile: @” myArchive” ]。 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 if (! dataArea) { NSLog (@“ Can’ t read back archive file!” )。 Return (1)。 } unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData: dataArea]。 // Decode the objects we previously stored in the archive myBook = [unarchiver decodeObjectForKey: @” myaddrbook” ]。 myFoo1 = [unarchiver decodeObjectForKey: @” myfoo1” ]。 [unarchiver finishDecoding]。 [unarchiver release]。 // Verify that the restore was successful [myBook list]。 NSLog (“ %@\n%i\n%g” , [myFoo1 strVal], [myFoo1 intVal], [myFoo1 floatVal])。 [pool release]。 return 0。 } 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 輸出: ======== Contents of: Steve’ s Address Book ========= Jamie Baker Julia Kochan Stephen Kochan Tony Iannino =================================================== This is the string 12345 輸出結(jié)果驗(yàn)證了你的地址簿和 Foo對(duì)象已成功地從檔案文件中恢復(fù)了。 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 ?在代碼清單 182中,嘗試創(chuàng)建包含可變字符串元素的數(shù)組副本,并且了解了如何進(jìn)行淺復(fù)制。也就是,沒有復(fù)制實(shí)際的字符串本身,只是復(fù)制對(duì)它們的引用。 ?可以使用 Foundation的歸檔能力來創(chuàng)建對(duì)象的深復(fù)制。例如,代碼清單 1911通過 data Array 歸檔到一個(gè)緩沖區(qū),然后把它解歸檔,將結(jié)果指派給 dataArray2,從而將 dataArray復(fù)制給 dataArray2對(duì)于這個(gè)過程,不需要使用文件。歸襠和解歸檔過程都可以在內(nèi)存中發(fā)生, 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 Program import Foundation/ import Foundation/ import Foundation/ import Foundation/ import Foundation/ int main (int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]。 NSData *data。 NSMutableArray *dataArray = [NSMutableArray arrayWithObjects: [NSMutableString stringWithString: @” one” ], [NSMutableString stringWithString: @” two” ], [NSMutableString stringWithString: @” three” ], nil ]。 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 NSMutableArray *dataArray2。 NSMutableString *mStr。 // Make a deep copy using the archiver data = [NSKeyedArchiver archivedDataWithRootObject: dataArray]。 dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: data]。 mStr = [dataArray2 objectAtIndex: 0]。 [mStr appendString: @” ONE” ]。 NSLog (@” dataArray: “ )。 for ( NSString *elem in dataArray ) NSLog (“ %@” , elem)。 NSLog (@” \ndataArray2: “ )。 for ( NSString *elem in dataArray2 ) NSLog (“ %@” , elem)。 [pool drsin]。 return 0。 } 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 輸出 : dataArray: one two three dataArray2: oneONE two three 武漢大學(xué)國際軟件學(xué)院 ObjectiveC 使用歸檔程序復(fù)制對(duì)象 這個(gè)輸出結(jié)果驗(yàn)證了更改 dataArray2的第一個(gè)元素對(duì) dataArray的第一個(gè)元素并沒有影響, 這是因?yàn)樵跉w檔和解歸檔過程中產(chǎn)生的是字符串的新副本。代碼凊單 1911中的復(fù)制操作是通過以下兩行實(shí)現(xiàn)的: data = [NSKeyedArchiver archivedDataWithRootObject: dataArray]。 dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: data]。 甚至可以避免中間陚值,只用一條語句來執(zhí)行復(fù)制,如下所示: dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: [NSKeyedArchiver archivedDataWithRootObject: dataArray]]。 下次需要生成一個(gè)對(duì)象(或不支持 NSCopying協(xié)議的對(duì)象)的深復(fù)制時(shí),應(yīng)該記住這項(xiàng)技術(shù)。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1