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. 128字節的sockaddr_storage大小
- 3. Java:Char與字節字節大小。
- 4. 大小字節邊界
- 5. ajax響應字節大小
- 6. Android:字節分配超出字節最大堆大小
- 7. 計算Java對象的字節大小
- 8. (千兆字節)大小的文件
- 9. 具有\ n字節大小的MIPS ASCIIZ?
- 10. 無效的分配大小:4294967295字節
- 11. WP7 IsolatedFileStorageStream - 錯誤的字節大小
- 12. Alllocate正確的字節數組大小
- 13. 得到字節的圖像大小
- 14. C++類空類的大小1字節
- 15. 查找cv的字節大小:: Mat
- 16. 如何知道字節的字節大小?
- 17. 字節人類可讀大小與npm包文件大小
- 18. 獲取HTTPRequest/HTTPResponse頭字節大小(以字節爲單位)
- 19. 表單大小以字節使用JavaScript?
- 20. C#SqlCommand字節傳輸大小
- 21. 用Cocoa減少圖像字節大小
- 22. Arduino以太網字節大小問題
- 23. 將文件截斷爲字節大小
- 24. 獲取數據類型字節大小
- 25. 解碼後位圖字節大小?
- 26. 節點大小kubernetes
- 27. Networkx節點大小
- 28. SQL Server:數據頁面大小混淆:8060 + 96字節仍小於8k字節
- 29. 如何計算以字節爲單位的節點大小
- 30. D3節點佈局的節點大小
謝謝,這工作得很好!我使用它的原因是獲取[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