Попытка создать честный NSDecimalNumber в воске
Изучая проблему, с которой я столкнулся в попытке создать NSDecimal в iPhone-Wax, я сейчас стремлюсь к гораздо более низкому уровню. Как я могу создать полностью функциональный NSDecimalNumber в воске?
Я добавил следующие две строки вверху AppDelegate.lua в новом восковом проекте.
local x = NSDecimalNumber:initWithString("2.3")
print(x)
print(x:class())
Выход
(0x631e054 => 0x631d1a0) 2.3
(0x631e924 => 0x25f618) NSCFNumber
вместо чего-то вроде
(0x621e834 => 0x620c550) <NSDecimalNumber: 0x620c550>
Включение полного входа в воск дает следующую трассировку в окне отладки:
Creating class for WaxServer(0x621bf40)
Storing reference of class to userdata table WaxServer(0x621bf40 -> 0x621c454)
Storing reference to strong userdata table WaxServer(0x621bf40 -> 0x621c454)
Creating class for NSDecimalNumber(0x261120)
Storing reference of class to userdata table NSDecimalNumber(0x261120 -> 0x6205e44)
Storing reference to strong userdata table NSDecimalNumber(0x261120 -> 0x6205e44)
Creating instance for NSDecimalNumberPlaceholder(0x6213450)
Retaining instance for NSDecimalNumberPlaceholder(0x6213450 -> 0x621d7c4)
Storing reference of instance to userdata table NSDecimalNumberPlaceholder(0x6213450 -> 0x621d7c4)
Storing reference to strong userdata table NSDecimalNumberPlaceholder(0x6213450 -> 0x621d7c4)
Creating instance for NSCFNumber(0x620c550)
Retaining instance for NSCFNumber(0x620c550 -> 0x621e834)
Storing reference of instance to userdata table NSCFNumber(0x620c550 -> 0x621e834)
Storing reference to strong userdata table NSCFNumber(0x620c550 -> 0x621e834)
(0x621e834 => 0x620c550) 2.3
Creating class for AppDelegate(0x621ec50)
:
:
В этом журнале показаны две вещи, которые я не просил: NSDecimalNumberPlaceholder и NSCFNumber. Я считаю, что это источник моего горя, и я понятия не имею, откуда они берутся. Любые идеи о том, как решить проблему?
В конечном итоге я хочу вызвать метод decimalValue, но воск жалуется, что он не может вызвать метод для числа.
1 ответ
NSDecimalNumber переопределяет -description
вернуть число, которое оно представляет. Когда вы регистрируете оператор, выдает "2.3", он фактически печатает объект NSDecimalNumber. Вы можете убедиться в этом сами, позвонив -class
на ваше x
стоимость и печать, а также.