正如我上面國標的問題,你通常有什麼要求,以說:「好吧,我需要encodeWithCoder:
和initWithCoder:
實例化這個」滿足?通常你可以寫對象狀態到NSUserDefaults
,所以我很好奇你什麼時候專家決定使用一個vs另一個?什麼時候在iPhone上使用encodeWithCoder:和initWithCoder:?
8
A
回答
6
NSCoder
是實現串行化的標準可可方法。有關詳細信息,請參閱Apple的Archives and Serializations Programming Guide for Cocoa。
9
用戶默認值基本上是一個屬性列表。屬性列表與JSON類似,只能存儲特定類型的數據 - NSString,NSNumber,NSData,NSDate,NSArray,NSDictionary。如果您嘗試以用戶默認方式存儲其他任何內容,則會發生異常。屬性列表也不能處理任意的對象圖,只能處理樹。
你總是可以把你的自定義狀態,並把它轉換成一個屬性列表兼容的數據結構,然後將其存儲在用戶的默認值;但是你基本上實現了一個對象序列化機制,你可以使用NSArchiver已經提供的更強大的一個。
10
initWithCoder:
使用由OS時未歸檔XIB文件;如果仔細觀察,您會看到initWithFrame:
未在您的XIB中創建的視圖中調用;他們將會調用initWithCoder:
。
1
只要我有一些複雜的數據存儲,我永遠不必手動編輯,我會與NSCoder一起去。例如,我的應用程序Converter將從互聯網下載的貨幣匯率存儲在NSCoder存檔中。但是,這是它在這種存檔中唯一保存的內容:單元定義只能用手進行修改,它們保存在應用程序包中的一系列plist文件中,而最近選定的單元和值保存在NSUserDefaults的。
相關問題
- 1. 什麼時候使用initWithCoder:方法?
- 2. 什麼時候initWithCoder被調用?
- 3. 什麼時候使用__proto__和什麼時候使用原型
- 4. 什麼時候使用Ruby和什麼時候使用PHP
- 5. 什麼時候在Shippo上使用QUOTE
- 6. 什麼時候在PHP上使用MVC?
- 7. 什麼時候使用for-each和什麼時候在xslt中使用apply-templates?
- 8. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 9. 什麼時候應該使用AWS,什麼時候不使用
- 10. intn_t什麼時候使用它,什麼時候不使用
- 11. 什麼時候使用信號和插槽,什麼時候不使用
- 12. 什麼時候使用適配器和什麼時候使用inflater
- 13. 什麼是initWithCoder?
- 14. 你什麼時候使用getGraphObject和getGraphEdge
- 15. 什麼時候使用express.use,express.get和express.post
- 16. 什麼時候使用.val()和.innerHTML?
- 17. iOS/iPhone SDK:initWithCoder和encodeWithCoder不被調用
- 18. 什麼時候和爲什麼我會在C++中使用abs
- 19. 什麼時候使用uncaught_exception?
- 20. 什麼時候使用vtable?
- 21. 什麼時候使用sIFR?
- 22. JOINS什麼時候使用?
- 23. 什麼時候使用Dispose
- 24. 什麼時候使用ANTLR
- 25. 什麼時候使用StringIO?
- 26. Railties - 什麼時候使用
- 27. 什麼時候使用SpringApplicationBuilder?
- 28. 什麼時候使用GWT,什麼時候不需要
- 29. ZF2什麼時候使用getServiceLocator()什麼時候不到
- 30. SQL Server CASE什麼時候不使用CASE什麼時候
嗨本,當我使用XIB時,沒有這種方法我就沒事了。對於以編程方式構建的視圖,我通常只需使用loadView即可。對於使用IB構建的視圖,我使用viewDidLoad {}。所以我試圖理解什麼時候使用initWithCoder是合理的: – Coocoo4Cocoa 2009-05-01 15:31:18