Я строю ANE. В одном из моих вызовов в нативный код создается объект, и я хотел бы иметь возможность сохранить его в памяти для ссылки в будущем вызове.
Я думал, что мог бы сделать это, создав указатель на объект, а затем передав этот указатель в FRESetContextNativeData (), как в примере ниже:
FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing...";
FRESetContextNativeData( ctx, &data );
return getFREString(data);
}
FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}
Это, кажется, не работает, однако. В конце retrieveData (), data
указывает на кучу случайности. Что дает?
Так что я немного идиот. Ошибка, которую я сделал, заключалась в &
до data
в моем вызове FRESetContextNativeData (). Для этого нужен только указатель, а не указатель на указатель типа FREGetContextNativeData ().
Следующий код дает ожидаемые результаты:
FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing..."FRESetContextNativeData( ctx, (void*)data );
return getFREString(data);
}
FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char *data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}
Других решений пока нет …