私はこれを理解しようとして夢中になり、私の知る限りあらゆることを試しました。誰かがこの問題を解決できることを願っています。現在の設定について説明させてください。
iOS アプリ内で Bump-api を使用しています。アプリの最初の起動時に呼び出されるAppDelegateにconfigureBump
メソッドがあります。したがって、アプリは最初から 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
呼び出された別のインスタンスがあるかのようです。テスト中に変更し、db
内myMethod
で作成することにしたとき、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...
}
何か案は?