0

私はこれを理解しようとして夢中になり、私の知る限りあらゆることを試しました。誰かがこの問題を解決できることを願っています。現在の設定について説明させてください。

iOS アプリ内で Bump-api を使用しています。アプリの最初の起動時に呼び出されるAppDelegateconfigureBumpメソッドがあります。したがって、アプリは最初から Bump サーバーに接続されています。

次に、次の UIViewController をこの順序で積み重ねた NavigationController があります。

ViewControllerA -> ViewControllerB -> ViewControllerC

VCA (ViewControllerA)は、アプリを起動したときに最初に表示されるビューです。にViewWillLoadは、次のコードがあります。

myAppDelegate = [[UIApplication sharedApplication] delegate];
[myAppDelegate vibrateBump:NO];

vibrateBumpバンプのオフとオンを切り替えるために使用するAppDelegateのメソッドです。その場合、転送したいものがないため、 VCAでオフにしたいと考えています。

ただし、VCBには と同じコード ストリップがありvibrateBump:YES、ここでバンプを機能させたいと考えています。これはすべて正常に機能します。私がそこに着いていることを心配しないでください。

今、AppDelegateconfigureBump内のメソッドで、バンプされたときにVCBからメソッドを呼び出すように設定しました。これは、物事が奇妙になるときです。VCBで呼び出されるメソッドの例を次に示します。

@implementation VCB {
   FMDatabase * db;
}

- (void)viewDidLoad{
   //db is set up here...
}

-(void) otherMethodWithinVC{
   //Some action here...
}

-(void) myMethod:(NSArray*)myArray{
   [db open] //This does now work

   Do some stuff here.... //All this works

   [db close] //This does now work
   [self otherMethodWithinVC] //This does now work
}

なぜ機能しないの[db open]ですか?myMethod呼び出された別のインスタンスがあるかのようです。テスト中に変更し、dbmyMethodで作成することにしたとき、db動作し始めました。

メソッド内でセットアップするconfigureBump方法は次のとおりです。

- (void) configureBump {
    VCB * vcb = [[VCB alloc] init];

    [[BumpClient sharedClient] setChannelConfirmedBlock:^(BumpChannelID channel) {
       //Some action here...
    }];

    [[BumpClient sharedClient] setDataReceivedBlock:^(BumpChannelID channel, NSData *data) {
        dataArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];

        if([dataArray count]>0){
            if([vcb myMethod:dataArray];
        }
    }];

    //Some action here...

}

何か案は?

4

1 に答える 1