【发布时间】:2016-04-14 22:24:13
【问题描述】:
C 的东西,因为它来自 LUA,所以有点迷失了。我已经编程多年,但不确定如何存储我的委托对象并在以后指向它。我可以很好地创建一个新实例,但需要从适用于 iOS 的 Corona Enterprise 插件引用以前创建的实例。希望有人可以帮助解决这个小问题。
所以我在我的 CoronaIbeaconDelegate @interface 之后定义了一个变量,如下所示:
CoronaIBeaconDelegate *coronaIBeaconDelegate;
稍后在我的 Corona 插件类代码中,我创建了一个 CoronaIBeaconDelegate 的实例,如下所示:
int
PluginLibrary::scan( lua_State *L )
{
int listenerIndex = 1;
coronaIBeaconDelegate = [[CoronaIBeaconDelegate alloc] firstRegion];
if ( CoronaLuaIsListener( L, listenerIndex, kEvent ) )
{
Self *library = ToLibrary( L );
CoronaLuaRef listener = CoronaLuaNewRef( L, listenerIndex );
library->Initialize( listener );
// Create event and add message to it
CoronaLuaNewEvent( L, kEvent );
lua_pushstring(L,"scan");
lua_setfield(L, -2, "phase" );
lua_pushboolean(L,true );
lua_setfield(L, -2, "scanning" );
lua_pushstring( L, "Scanning Started" );
lua_setfield( L, -2, "message" );
// Dispatch event to library's listener
CoronaLuaDispatchEvent( L, library->GetListener(), 0 );
}
return 0;
}
这可以正常工作,但是当我将委托存储在 coronaIBeaconDelegate 变量中时出现警告说“未找到实例方法 -firstRegion”,但这将按预期调用类函数 firstRegion,并且我的 IBeacon 代码开始扫描。
我想要做的是能够在 CoronaIBeaconDelegate 类中调用另一个名为 stopRangingForBeacons 的函数,就像使用前面的实例一样:
int
PluginLibrary::stopscan( lua_State *L )
{
int listenerIndex = 1;
[coronaIBeaconDelegate stopRangingForBeacons];
if ( CoronaLuaIsListener( L, listenerIndex, kEvent ) )
{
Self *library = ToLibrary( L );
CoronaLuaRef listener = CoronaLuaNewRef( L, listenerIndex );
library->Initialize( listener );
// Create event and add message to it
CoronaLuaNewEvent( L, kEvent );
lua_pushstring(L,"stopscan");
lua_setfield(L, -2, "phase" );
lua_pushboolean(L,true );
lua_setfield(L, -2, "scanning" );
lua_pushstring( L, "Scanning Stopped" );
lua_setfield( L, -2, "message" );
// Dispatch event to library's listener
CoronaLuaDispatchEvent( L, library->GetListener(), 0 );
}
return 0;
}
发生的是空错误。我试图将前一个实例存储在 coronaIBeacon 变量中,但它不起作用。我真的无法完成这个简单的任务。
请帮忙谢谢?
【问题讨论】:
标签: ios objective-c lua