到目前为止,远程擦除工作正常,但我在后台启动备份时遇到问题。远程擦除也可以在后台运行。我正在尝试从后台运行的startBackgroundBackupActivity
类调用locationHandler
方法。
BackgroundBackupHandler.m
- (void) OnSyncComplete:(NSNumber*)result message:(NSString *)message{
NSLog(@"-(void)OnSyncComplete:%@ message=%@",result, message);
//jxxtodo: Ensure all existing objects are reset, including DB and network connections
if (0 == [result intValue]){
NSString *strMsg = [ErrorHandler getErrorTextByErrorNumber:SYNC_SUCCESS_INF withObjects:nil];
[self logEvent:strMsg];
}else if (2 == [result intValue]){//no sync required
NSString *strMsg = [ErrorHandler getErrorTextByErrorNumber:NO_NEED_SYNC_INF withObjects:nil];
[self logEvent:strMsg];
}else if (3 == [result intValue]) {
NSString *strMsg = [ErrorHandler getErrorTextByErrorNumber:SYNC_RESET_EMPTY_INF withObjects:nil];
[self logEvent:strMsg];
} else{
NSString *strMsg = [ErrorHandler getErrorTextByErrorNumber:SYNC_COMMON_ERR withObjects:nil];
[self logEvent:strMsg];
return;
}
[m_pSyncController release];
m_pSyncController = nil;
self.m_backupSet = nil;
[self performSelector:@selector(startBackgroundBackupActivity) withObject:nil afterDelay:1.5];
}
目前,OnSyncComplete:message:
是startBackupActcitivy
课程中调用BackgroundBackupHandler
的内容。
我有另一个类LocationHandler
,它检查从服务器发送的标志并根据标志执行某些操作。因此,如果该标志设置为备份然后擦除,它将运行备份然后擦除设备。
如何从OnSyncComplete:message:
课程中拨打LocationHandler
。
我试过了:
BackgroundBackupHandler *bgBackup = [[BackgroundBackupHandler alloc]init];
[bgBackup OnSyncComplete:[NSNumber numberWithInt:3] message:nil];
这给了我错误并终止了我的申请。无论如何都要从startBackgroundBackupActivity
拨打LocationHandlerClass
。
错误是应用程序崩溃并中止。 NSInvalidArgumentException,其中nil不是合法的NSManagedObjectContext。 locationHandler将启动后台任务,然后该任务将同步设备并将控制返回到LocationHandler类中的OnSyncComplete方法,然后该方法又调用BackgroundBackupHandler类中的OnSyncComplete。
答案 0 :(得分:-1)
在对象之间创建通信的两种方法是: 1)代表团 2)通知
在您的情况下,似乎通知可以更好地工作。 看看这个