Objective c 目标C:对<;开始/结束外观转换的不平衡调用;NotFoundViewController:0x8888a80>;
我正在构建一个天气应用程序。在某种情况下,我必须执行segue并更改视图控制器。 我使用MKNetworkKit。如果API没有返回值,我将触发segue。在这个屏幕上,我还创建并显示了一个动画。 这是我的密码:Objective c 目标C:对<;开始/结束外观转换的不平衡调用;NotFoundViewController:0x8888a80>;,objective-c,segue,mknetworkkit,Objective C,Segue,Mknetworkkit,我正在构建一个天气应用程序。在某种情况下,我必须执行segue并更改视图控制器。 我使用MKNetworkKit。如果API没有返回值,我将触发segue。在这个屏幕上,我还创建并显示了一个动画。 这是我的密码: - (void)proccessCompletedWithSuccess:(BOOL)success withResponse: (NSArray *)response; { if(success){ //do something }else{
- (void)proccessCompletedWithSuccess:(BOOL)success withResponse: (NSArray *)response;
{
if(success){
//do something
}else{
[self performSegueWithIdentifier:@"NotFound" sender:self];
}
}
GetWeather.m文件:
#import "GetWeather.h"
@implementation GetWeather
-(MKNetworkOperation*)
urlForApi:(NSString*) urlForApi
path:(NSString*) path
params:(NSMutableDictionary*)params
completionHandler:(ApiResponseBlockForWeather) completionBlock
errorHandler:(MKNKErrorBlock) errorBlock {
MKNetworkOperation *op = [self operationWithPath:path
params:params
httpMethod:@"GET"];
[op addCompletionHandler:^(MKNetworkOperation *completedOperation)
{
NSArray* returningArray = [completedOperation responseJSON];
NSString* description =[[[[returningArray valueForKey:@"query"]
valueForKey:@"results"]
valueForKey:@"channel"]
valueForKey:@"description"];
if ([description isEqualToString:@"Yahoo! Weather Error"]) {
[self.delegate proccessCompletedWithSuccess:NO withResponse:nil];
}else{
[self.delegate proccessCompletedWithSuccess:YES withResponse:returningArray];
}
if([completedOperation isCachedResponse]) {
//NSLog(@"weather response from cache");
}
else {
//NSLog(@"weather response from server");
}
// NSLog(@"%@",[completedOperation url]);
completionBlock(returningArray);
}errorHandler:^(MKNetworkOperation *errorOp, NSError* error) {
errorBlock(error);
[self.delegate proccessCompletedWithSuccess:NO withResponse:nil];
}];
[self enqueueOperation:op];
return op;
}
@end
我得到了这个错误:对开始/结束外观转换的不平衡调用。
更新:
我迟迟没有试过performSelector
[self performSelector:@selector(performNotFound) withObject:nil afterDelay:1.0f];
-(void)performNotFound{
[self performSegueWithIdentifier:@"NotFound" sender:self];
}
但是没有任何变化。性能检查是否被多次调用?你能试着记录一下它被调用了多少次吗?它被调用了两次它被调用了两次?然后你犯了错误…我知道这是错误,但无法解决。。找不到为什么触发两次segue。我的xibs有这个问题。对web服务的异步调用正在触发UINavigationController推送/弹出。当web服务返回数据时,用户可以点击后退按钮,这将是第二次转换。这导致了开始和结束的不平衡。naviationController不进行队列转换,它只是在获取它们时激发它们。