Вы действительно действительно не хотите добавлять категорию в NSNull, которая добавляет такие распространенные методы. Это изменит поведение NSNull для всех экземпляров в приложении, в том числе созданных базовыми платформами исключительно для их личного использования.
Если вам нужен класс значений, представляющий понятие «значение не существует, и поэтому вместо этого я собираюсь вернуть эти значения по умолчанию», создайте класс или экземпляр, который представляет именно это.
Что касается причин сбоя, я не могу сказать вам, не увидев фактических подробностей сбоя.
<Ч />
И, да, действительно ЭТО плохо добавлять категорию в класс, который добавляет такой общий метод. Все, что требуется, - это один бит кода в плагине или фреймворке, который делает:
if ([fooMaybeNull respondsToSelector: @selector(intValue)] bar = [fooMaybeNull intValue];
Не слишком притянуто за уши - мне пришлось отлаживать неприятные сбои или неправильное поведение из-за точно такого рода категории волей-неволей.
Если вы собираетесь добавить методы в класс с помощью категорий, добавьте префикс имен ваших методов, чтобы изолировать их от существующей функциональности . Это все еще хрупко, но управляемо так.