我一直在让自己发疯,试图弄清楚这一点,并且据我所知,我已经尝试了几乎所有事情。我希望有人能解决这个问题,让我解释一下我目前的设置。
我在我的 iOS 应用程序中使用 Bump-api。我在AppDelegate中有该configureBump
方法,该方法在应用程序的初始启动中被调用。所以应用程序从一开始就连接到 Bump 服务器。
接下来,我有一个 NavigationController,其中按此顺序堆叠了以下 UIViewController:
ViewControllerA -> ViewControllerB -> ViewControllerC
VCA (ViewControllerA)是启动应用程序时的第一个视图。在ViewWillLoad
我有以下代码:
myAppDelegate = [[UIApplication sharedApplication] delegate];
[myAppDelegate vibrateBump:NO];
vibrateBump
是我的AppDelegate中的一种方法,我用它来关闭和开启颠簸。在这种情况下,我希望在VCA上关闭它,因为我不想转移任何东西。
但是,在VCB中,我有与 相同的代码条vibrateBump:YES
,这就是我希望 Bump 工作的地方。这一切都很好,别担心我会到达那里。
现在,在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...
}
有任何想法吗?