iOS-alloc调用了两次,结果不同

iOS-alloc调用了两次,结果不同,ios,objective-c,appcelerator,allocation,alloc,Ios,Objective C,Appcelerator,Allocation,Alloc,首先,我正在将Appcelerator与本机iOS代码连接起来,而我没有访问Hyperloop的权限。本机iOS代码中存在以下函数。它们被编译为iOS模块,并直接从Appcelerator代码调用: MyAppModule.m MyAppProxy.m 当我最初调用thisA时,它会起作用。我看到了所有3个NSLog,出现了预期的结果。当我最初调用thisB时,它工作正常。我看到了所有3个NSLog,出现了预期的结果 当我在5分钟后再次呼叫thisA时,它仍然有效。我看到了所有3个NSLog,出

首先,我正在将Appcelerator与本机iOS代码连接起来,而我没有访问Hyperloop的权限。本机iOS代码中存在以下函数。它们被编译为iOS模块,并直接从Appcelerator代码调用:

MyAppModule.m

MyAppProxy.m

当我最初调用thisA时,它会起作用。我看到了所有3个NSLog,出现了预期的结果。当我最初调用thisB时,它工作正常。我看到了所有3个NSLog,出现了预期的结果

当我在5分钟后再次呼叫thisA时,它仍然有效。我看到了所有3个NSLog,出现了预期的结果。当我在5分钟后再次调用thisB时,它根本不会执行。我甚至没有看到第一个NSLog(从B开始)。如果在那之后我再调用thisC,它就可以正常工作了。啊

这两者表面上没有区别。然而,一个发射多次,另一个只发射一次


我做错了什么?我束手无策。谢谢大家。

我不确定,但第一步可能是通过调用
init
或指定的初始化器来初始化您正在分配的对象。self.MyBridge=[[MyAppProxy alloc]init];不会更改结果。您是否尝试在
thisB
及其调用位置放置断点?如果是的话,他们展示了什么?如果没有,那么就这样做,并从调用进入方法并通过它。(根据前面的评论,将所有这些
alloc
更改为
new
alloc
/
init
后。)
MyAppProxy
通过蓝牙连接到设备。
new
init
对我不起作用,因为当重新初始化
MyAppProxy
时,它会将所有先前设置的变量置零,并失去连接
thisA
thisB
调用setters来更新活动变量:1=开始,2=停止。至于断点,我的应用程序是内置合金的。当我打开项目并在Xcode中构建它时,它会在我到达需要测试的屏幕之前中断,因为它找不到任何用于导航的图像文件。因此,我似乎不能使用断点。啊。
-(void)thisA
{
    NSLog(@"***** Started A");
    self.MyBridge = [MyAppProxy alloc];
    [self.MyBridge callThis];
    NSLog(@"***** Ended A");
}

-(void)thisB
{
    NSLog(@"***** Started B");
    self.MyBridge = [MyAppProxy alloc];
    [self.MyBridge callThisOtherThing];
    NSLog(@"***** Ended B");
}

-(void)thisC
{
    NSLog(@"***** Started C");
    self.MyBridge = [MyAppProxy alloc];
    [self.MyBridge callThisOtherThing];  // Does the same thing B does
    NSLog(@"***** Ended C");
}
-(void)callThis
{
    thisVar = 1;
    NSLog(@"***** thisVar set to 1");
}

-(void)callThisOtherThing
{
    thisVar = 2;
    NSLog(@"***** thisVar set to 2");
}