Как обобщение: просто придерживайтесь типов POD, пока вам не понадобится для использования представления на основе объектов, такого как NSNumber
. Производительность намного лучше с POD, но в некоторых случаях вам понадобится NSNumber
.
В некоторых случаях может иметь смысл использовать NSNumber
вместо этого - обычно, когда вы часто используете a NSNumber
часто - чтобы избежать создания дубликата NSNumber
s. Такие вхождения являются практичными лишь в редких случаях за пределами сериализации и общих интерфейсов objc (привязок, преобразователей, словарей).
Обновление / Подробности: Среда выполнения ObjC в некоторых случаях на некоторых архитектурах и в некоторых версиях ОС заменяет тегированный указатель , представляющий NSNumber
s определенного типа и домена , Хотя внутреннее представление изменилось с тех пор, как оно было написано несколько лет назад, хорошее введение в тему: http://objectivistc.tumblr.com/post/7872364181/tagged-pointers-and-fast-pathed-cfnumber-integers-in. Где это можно использовать, оно избавляет вас от медленных операций, таких как операции выделения, блокировки и подсчета ссылок. , Тем не менее, теговые указатели не способны представлять каждое число, и это приводит к накладным расходам, поэтому вы все равно должны отдавать предпочтение базовым встроенным функциям вместо NSNumber
по умолчанию. Помеченные указатели - отличная оптимизация, где это применимо, но они далеко не конкурируют со встроенными, когда вам просто нужно число .