Недавно я использовал Objective-C, и, исходя из мира C++, я не понимаю смысла указывать емкость для собственных коллекций Objective-C.
В C++ контейнеры могут быть заполнены объектами или ссылочными типами (например, ссылочными обертками или указателями), поэтому указание начальной емкости имеет смысл, поскольку предварительное выделение памяти для последовательности больших объектов может быть затруднено. большое улучшение производительности. Однако в Objective-C коллекции могут содержать только ссылки на динамически размещаемые объекты, т. е. указатели. Как следствие, мне интересно, какое преимущество в производительности от указания емкости, если в худшем случае нужно будет скопировать только указатели, если размер коллекции превысит исходную емкость.
Ясно, что мне не хватает понимания модели памяти, так что же я упускаю?
...WithCapacity:
для создания объектов коллекции. Некоторые люди смотрят на справочник класса, скажем,NSMutableArray
и видят только один удобный конструктор:+arrayWithCapacity:
. Они предполагают, что это единственное доступное, забывая, чтоNSMutableArray
наследует все методы своих суперклассов. ПосколькуNSArray
предоставляет+array
(и другие), они также доступны для использования сNSMutableArray
. - person Ken Thomases   schedule 01.10.2014