正如我上面國標的問題,你通常有什麼要求,以說:「好吧,我需要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和encodewithCoder在iOS
- 2. 什麼時候使用initWithCoder:方法?
- 3. 什麼時候initWithCoder被調用?
- 4. 什麼時候使用__proto__和什麼時候使用原型
- 5. 什麼時候使用Ruby和什麼時候使用PHP
- 6. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 7. 什麼時候在PHP上使用MVC?
- 8. 什麼時候在Shippo上使用QUOTE
- 9. 什麼時候使用for-each和什麼時候在xslt中使用apply-templates?
- 10. 什麼時候應該使用AWS,什麼時候不使用
- 11. intn_t什麼時候使用它,什麼時候不使用
- 12. 什麼時候使用ByteString,什麼時候不使用?
- 13. 什麼時候和Swing一起使用AWT,什麼時候不使用?
- 14. 什麼時候使用適配器和什麼時候使用inflater
- 15. 什麼時候使用信號和插槽,什麼時候不使用
- 16. 什麼是initWithCoder?
- 17. 什麼時候應該使用async/await,什麼時候不用?
- 18. 什麼時候編譯和構建,什麼時候不用.NET?
- 19. 什麼時候應用程序會在iPhone 5中使用letterbox?
- 20. 我什麼時候使用圖片和什麼時候用css3創建窗體
- 21. 什麼時候使用.val()和.innerHTML?
- 22. 什麼時候使用express.use,express.get和express.post
- 23. 你什麼時候使用getGraphObject和getGraphEdge
- 24. 什麼時候使用FragmentManager :: putFragment和getFragment
- 25. 在TypeScript中,什麼時候使用「let」,什麼時候使用「const」?
- 26. iOS/iPhone SDK:initWithCoder和encodeWithCoder不被調用
- 27. 什麼時候使用sIFR?
- 28. 什麼時候使用MessageDigest.reset()
- 29. 什麼時候使用VK_IMAGE_LAYOUT_GENERAL
- 30. 什麼時候使用SVDRecommender
嗨本,當我使用XIB時,沒有這種方法我就沒事了。對於以編程方式構建的視圖,我通常只需使用loadView即可。對於使用IB構建的視圖,我使用viewDidLoad {}。所以我試圖理解什麼時候使用initWithCoder是合理的: – Coocoo4Cocoa 2009-05-01 15:31:18