我不知道什麼是落後的NSDictionary方法allKeys的決定,返回一個NSArray,而不是NSSet中,這會更有意義,因爲沒有關於返回數組的順序保證而且,關鍵是獨特的的NSDictionary allKeys返回NSArray的,而不是NSSet中
回答
那麼大家都在猜測......
作爲OP說,每個密鑰都是唯一的。對於數組或集合大小寫的字典代碼必須收集密鑰 - 這兩者的成本都適用。在集合情況下,每個密鑰都必須被添加到集合中,這涉及到對成員資格的(無意義的)測試,而在數組情況下,不需要進行成員資格測試 - 添加到數組的成本應該小於添加到一個集合。數組獲勝。
你說NSSet插入需要O(n)重複搜索?如果蘋果如此關心NSSet的性能,爲什麼他們會在很多情況下使用它,但不是這個。 –
查看源代碼顯示他們使用O(1)哈希表來處理NSSet。重複的分辨率不會造成影響。 –
@JustinMeiners - 我小心翼翼地沒有提及O();-)但是你是否說你已經檢查了源或者數組,並且設置並確定了檢查的代價是* zero *並且沒有問題 - 檢查添加的代價一個數組的項目和一個集合是否相等?但是,除非代碼中有評論,否則每個人都只是在這裏玩得開心,可以爲兩種選擇提出論據 - 甚至可能是任意的。 – CRD
而且,除了什麼賈斯汀說,如果你其實是想你必須拿到的NSSet,然後將其轉換成一個NSArray字典鍵的列表。如果你只是想測試關鍵的存在,OTOH,你可以直接對字典,並不需要設置。
- 1. 爲什麼NSDictionary的allKeys和allValues方法返回NSArray而不是NSSet?
- 2. NSUserDefaults的返回的NSDictionary,而不是NSArray的
- 3. NSUserDefaults返回NSArray而不是NSDictionary。顯然,因爲iOS的9.0
- 4. 從NSDictionary返回NSArray
- 5. NSDictionary到NSArray並返回到NSDictionary
- 6. NSDictionary allkeys到UITableViewCell
- 7. NSDictionary allKeys order
- 8. 爲什麼不[NSDictionary allKeys]返回一個集合?
- 9. NSArray的NSArray - 在數組中只有一個字典時返回NSDictionary,而不是一個對象的數組
- 10. 使用的NSSet VS NSDictionary中
- 11. iOS - allKeys究竟是什麼:在NSArray中返回,以及如何字母化?
- 12. 爲什麼NSArray arrayWithObjects和friends會返回id而不是NSArray *?
- 13. 返回NSMutableArray而不是聲明NSArray的Objective-c返回方法返回類型
- 14. JSONKit返回不需要的NSCFString而不是NSDictionary
- 15. NSDictionary命令不匹配allKeys命令
- 16. NSArray內的NSDictionary
- 17. NSArray內的NSDictionary
- 18. 的NSDictionary的NSArray到
- 19. 的NSDictionary的NSArray和
- 20. 篩選NSArray,它包含NSDictionary中的NSDictionary
- 21. NSArray中的NSDictionary搜索
- 22. NSArray中的NSDictionary故障
- 23. Plist中的NSDictionary和NSArray
- 24. 搜索nsdictionary的nsarray
- 25. 包含NSArray的NSDictionary
- 26. 什麼是NSDictionary的-allKeys方法的計算複雜性?
- 27. NSDictionary的NSArray的過濾器和NSDictionary的
- 28. NSArray返回NULL?
- 29. 爲什麼NSArray具有indexOfObjectPassingTest方法而不是像NSSet這樣的objectsPassingTest?
- 30. Objective-C方法返回NSDictionary而不是NSMutableDictionary。爲什麼?
異議;炒作! –
這不主要是基於意見的,並且類似問題有很多先例。 –
雖然沒有先例,這樣一個問題,你是不是問原來的開發商和所有答案只能是speculation.For這個問題,這是你在問NextStep自動代碼。答案很可能是「API的兼容性比你想象的要早得多」。 –