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还是释放。
任何提示将不胜感激。 谢谢。