11
A
回答
18
你應該多說一下你爲什麼關心字典的字節大小,因爲答案可能會有所不同。
一般來說,NSDictionary在內存中的足跡的「大小」並不是你能看到或關心的東西。它從程序員那裏抽象出它的存儲機制,並使用某種形式的開銷,超出了存儲的實際數據。
但是,您可以將字典序列化爲NSData。如果字典的內容只是像NSNumber,NSString,NSArray,NSData,NSDictionary那樣的「原始」類型,則可以使用NSPropertyListSerialization類將其轉換爲二進制屬性列表,該列表將關於其內容的最緊湊字節表示你可以得到:
NSDictionary * myDictionary = /* ... */;
NSData * data = [NSPropertyListSerialization dataFromPropertyList:myDictionary
format:NSPropertyListBinaryFormat_v1_0 errorDescription:NULL];
NSLog(@"size: %d", [data length]);
如果包含其他自定義對象,你可以使用的NSKeyedArchiver將其歸檔到一個NSData,但這將是顯著更大,需要您自定義類的合作。
2
您可以通過調用該得到任何階級的大小:
#import "objc/runtime.h"
int size = class_getInstanceSize([NSDictionary class]);
這將返回類的大小,而不是實際尺寸由實例化對象所佔據。如果你想要一個實例化對象的大小:
#import "malloc/malloc.h"
int size = malloc_size(myObject);
+4
這隻給你實例的實例變量的大小,它不會給你對象分配的任何東西的大小,也沒有任何方法可以這樣做。它也不適用於'NSDictionary',因爲在你的應用中永遠不會有'NSDictionary'的實例。只是私人子類的實例。 – bbum 2011-03-06 03:08:10
相關問題
- 1. 大小以字節
- 2. NSDictionary數據密鑰的最大大小
- 3. 128字節的sockaddr_storage大小
- 4. Java:Char與字節字節大小。
- 5. BufferedImage字節數組大小
- 6. 位/字節adressing - 小/大-endnian
- 7. 大小字節邊界
- 8. 不同字節大小
- 9. Python布爾字節大小
- 10. ajax響應字節大小
- 11. NSDictionary的大小寫不敏感的鍵
- 12. 通過反轉字節將小字節轉換爲大字節
- 13. Android:字節分配超出字節最大堆大小
- 14. Elasticsearch存儲大小是文檔字節大小的1000倍
- 15. 的Rijndael加密有效字節大小
- 16. (千兆字節)大小的文件
- 17. C++類空類的大小1字節
- 18. 數據包的字節大小
- 19. WP7 IsolatedFileStorageStream - 錯誤的字節大小
- 20. 查找cv的字節大小:: Mat
- 21. 具有\ n字節大小的MIPS ASCIIZ?
- 22. 調整圖像大小的字節[]
- 23. 得到字節的圖像大小
- 24. 固定大小的字節數組
- 25. 無效的分配大小:4294967295字節
- 26. 計算Java對象的字節大小
- 27. 每個表的字節大小SQL
- 28. Javafx:確定節點的字體大小
- 29. Alllocate正確的字節數組大小
- 30. 無效的分配大小:4294967295字節
謝謝,這工作得很好!我使用它的原因是獲取[NSHTTPURLResponse allHeaderFields]發送的http頭的大小,並查看這些頭的大小(嘗試監視網絡使用情況)......除非有更好的方法? – mootymoots 2011-03-05 22:43:10
查看網絡流量的更直接的方法是查看網絡流量。 :)運行一個Web代理並檢查流量?在桌面上查看Charles Proxy,或Wireshark或類似的東西。 – 2011-03-05 23:24:31
'dataFromPropertyList:format:errorDescription:'已棄用:在iOS 8.0中首先不推薦使用 - 使用dataWithPropertyList:format:options:error:instead。 – tdios 2015-10-05 19:02:30