【问题标题】:How to store my delegate instance in Obj-C如何将我的委托实例存储在 Obj-C 中
【发布时间】: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


    【解决方案1】:

    像往常一样,我回答我自己的问题。我的问题是由于我初始化实例的方式。这是我的正确方法。

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

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多