[英]How to store my delegate instance in Obj-C
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变量中,但是它不起作用。 我真的似乎无法轻视这个简单的任务。
请帮忙谢谢?
和往常一样,我回答自己的问题。 我的问题归结于初始化实例的方式。 这是我的正确方法。
IBeaconDelegate = [[CoronaIBeaconDelegate alloc] init];
[IBeaconDelegate firstRegion];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.