您好,登錄后才能下訂單哦!
棧區(stack) --由編譯器自動分配釋放,存放函數的參數值,局部變量的值。
堆區 (heap) ---一般有程序員分配釋放。
全局區(靜態區)(static) --全局變量和靜態變量,程序結束后由系統釋放。
文字常量區 -- 常量字符串存放在這里,程序結束后由系統釋放。
程序代碼區 ---存在行數體的二進制文件。
棧:只要棧的剩余空間大于所申請空間,系統將為程序提供內存,否則將報異常提示棧溢出。
堆:首先應該知道操作系統有一個記錄空閑內存地址的鏈表,當系統收到程序的申請時,會遍歷該鏈表,尋找第一個空間大于所申請空間的堆結點,然后將該結點從空閑結點鏈表中刪除,并將該結點的空間分配給程序,另外,對于大多數系統,會在這塊內存空間中的首地址處記錄本次分配的大小,這樣,代碼中的delete語句才能正確的釋放本內存空間。另外,由于找到的堆結點的大小不一定正好等于申請的大小,系統會自動的將多余的那部分重新放入空閑鏈表中。
1、 iOS本地數據存儲都有哪幾種方式?iOS如何實現復雜對象的存儲?
1、 NSKeyedArchiver(歸檔)采用歸檔的形式來保存數據,該數據對象需要遵守NSCoding協議,并且該對象對應的類必須提供encodeWithCoder:和initWithCoder:方法。
2、 NSUserDefaults:用來保存應用程序設置和屬性、用戶保存的數據。用戶再次打開程序或開機后這些數據仍然存在。NSUserDefaults可以存儲的數據類型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。
3、 Write寫入方式:永久保存在磁盤中。
4、 SQLite(FMDB、CoreData)
NSCoding +NSKeyedArchiver實現復雜對象的存儲。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。