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

时间:2016-01-10 15:56:08

标签: ios objective-c lua

来自LUA的东西,有点迷失了。我已编程多年但不确定如何存储我的委托对象并稍后指向它。我能够很好地创建新实例,但需要从适用于iOS的Corona Enterprise插件引用先前创建的实例。希望有人可以帮助解决这个小问题。

所以我在我的CoronaIbeaconDelegate @interface之后定义一个变量,如下所示:

TextBox

稍后在我的Corona Plugin类代码中,我创建了一个CoronaIBeaconDelegate的实例,如下所示:

CoronaIBeaconDelegate *coronaIBeaconDelegate;

这样可以正常工作,但是当我将代理存储在coronaIBeaconDelegate变量中时,我会收到警告说"找不到实例方法-firstRegion"但是这将按预期调用类函数firstRegion并且我的IBeacon代码开始扫描。

我想要做的是能够在CoronaIBeaconDelegate类中调用另一个名为stopRangingForBeacons的函数,所以使用前面的实例:

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;

}

发生的是一个空错误。我试图将前一个实例存储在coronaIBeacon变量中,但它不起作用。我真的无法承担这个简单的任务。

请帮忙谢谢?

1 个答案:

答案 0 :(得分:0)

按照惯例,我回答我自己的问题。我的问题是由于我初始化我的实例的方式。这是我的正确方法。

 IBeaconDelegate = [[CoronaIBeaconDelegate alloc] init];
[IBeaconDelegate firstRegion];