繁体   English   中英

如何在Obj-C中存储我的委托实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM