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