Ответ 1
Результат для integerValue является неожиданным, но из того, что я понимаю, как описано:
NSDecimalNumber наследуется от NSNumber. В примечаниях к подклассам из NSNumber указано, что "... подкласс должен переопределить метод доступа, который соответствует объявленному типу - например, если ваша реализация objCType возвращает" я ", вы должны переопределить intValue..."
objCType установлен на внутренний указатель, поэтому он должен быть таким же, как для NSNumber.
NSDecimal не переопределяет intergerValue. Он переопределяет doubleValue, поэтому он должен работать нормально.
Единственное, что заставляет меня задуматься: кажется, что он не переопределяет intValue либо...