Попытка создать NSDecimal в iPhone-Wax

Вот проблема, с которой я столкнулся:

Я создаю NSDecimalNumber в Wax со строкой

    local x=NSDecimalNumber:initWithString("2.3") 

Из этого я хотел бы создать NSDecimal со следующими строка

   local y=x:decimalValue() 

Это сразу приводит к сбою программы.

Чтобы создать такой же опыт, вам необходимо создать базовый восковой проект и добавить две строки в качестве строк широты функции applicationDidFinishLaunching в AppDelegate.lua.

Вопрос: Как мне получить это, чтобы вернуть честный NSDecimal, который я могу пройти по? На самом деле мне не нужно самому видеть или распечатывать номер.


Приложения

  1. Несмотря на распространенное мнение в Интернете, NSDecimal очень отличается из NSDecimalNumber. Первая - это структура C, вторая - структура Obj-C, с которой я работаю очень хорошо.
  2. Чтобы заставить NSDecimalNumber работать, мне нужно закомментировать строки 222-224. (NSNumber) и 241-246 (NSValue) из воска-помощников.m.
  3. NSDecimal определяется в Foundation / NSNumber.h

Вывод при запуске: Трассировки стека не так уж много, он просто тихо умирает. В отладчике (с включенными точками останова) существует следующая (сокращенная) последовательность вызовов:

#0  0x027553f4 in objc_exception_throw
#1  0x0256e8d6 in __NSGetSizeAndAlignment
#2  0x0256ebd9 in __NSGetSizeAndAlignment
#3  0x025747b8 in __NSMS1
#4  0x02573f9c in +[NSMethodSignature signatureWithObjCTypes:]
#5  0x000342d0 in wax_selectorForInstance at wax_helpers.m:557
#6  0x00035bc2 in __index at wax_instance.m:303
#7  0x000181b9 in luaD_precall at ldo.c:319
#8  0x00018405 in luaD_call at ldo.c:376
#9  0x0002c488 in callTMres at lvm.c:88
#10 0x0002c74a in luaV_gettable at lvm.c:125
#11 0x0002dd26 in luaV_execute at lvm.c:467
#12 0x0001841c in luaD_call at ldo.c:377
#13 0x0000ddc8 in f_call at lapi.c:800
#14 0x0001758a in luaD_rawrunprotected at ldo.c:116
#15 0x0001879a in luaD_pcall at ldo.c:463
#16 0x0000de65 in lua_pcall at lapi.c:821
#17 0x00034e60 in wax_pcall at wax_helpers.m:826  
#18 0x00036be4 in pcallUserdata at wax_instance.m:580
#19 0x00036edc in wax_id_call at wax_instance.m:627

Иногда наблюдается следующая крошечная трассировка стека:

wTest[36403:207] PANIC: 

Error
-----
Error calling 'applicationDidFinishLaunching:' on lua object '<AppDelegate: 0x6300e50>'
data/scripts/AppDelegate.lua:39: attempt to index local 'x' (a number value)
stack traceback:
    [C]: ?
data/scripts/AppDelegate.lua:39: in function <data/scripts/AppDelegate.lua:19>

Это соответствует тому, что дает отладчик: Wax пытается вызвать метод для числовое значение.

6
задан John Smith 23 June 2011 в 01:36
поделиться