iOS – 导致无法识别的select器发送

由于代码隐私,我必须省略部分信息。 请原谅。

在这里输入图像说明

TokenRequestManager.m ,有一个实例方法serialQueue4TokenType

 - (dispatch_queue_t)serialQueue4TokenType:(TokenType)tokenType { static NSMutableDictionary *serialQueueDict = nil; if (serialQueueDict == nil) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ serialQueueDict = [[NSMutableDictionary alloc] initWithCapacity:TokenTypeCount]; }); } dispatch_queue_t queue; @synchronized (self) { NSString *key = [TokenManager tokenName4Type:tokenType]; key = [key stringByAppendingString:NSStringFromClass([self class])]; NSValue *value = serialQueueDict[key]; if (value == nil) { queue = dispatch_queue_create(key.UTF8String, DISPATCH_QUEUE_SERIAL); value = [NSValue valueWithBytes:&queue objCType:@encode(dispatch_queue_t)]; serialQueueDict[key] = value; } else { [value getValue:&queue]; } } return queue; } 

就在@synchronized (self) { line下面,它调用Class方法:

 + (NSString *)tokenName4Type:(TokenType)tokenType { NSString *string = nil; switch (tokenType) { case TokenTypeBiz: return @"TokenTypeBiz"; break; case TokenTypeWeb: default: string = @"TokenTypeWeb"; break; } return string; } 

代码只是站在那里,但有时(几次)的应用程序将崩溃在这一行unrecognized selector sent ,无论是debugging还是释放。

任何提示将不胜感激。 谢谢。