NSMethodSignature signatureWithObjCTypes:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSMethodSignature signatureWithObjCTypes:]: type signature is empty.' terminating with uncaught exception of type NSException

这个错误乍一看以为方法交换的错误,旧方法和新方法交换的崩溃,旧方法不存在所以崩溃了,所以解决方法是先判断当前是否存在这个方法,存在再交换,不存在先添加再交换,有可能是这样吧?因为我遇到的不是这个问题。

我的问题是在iOS15,16上面是没有问题,13和12上面有问题,一直崩溃,第一次是这个问题:

response[@"code"] integerValue];

后台没有返回code直接就崩溃了,但是15,16是没问题,所以就做了处理

给字典扩展了判空的方法

/** 判断value是否为null */
-(BOOL)isNullValueForKey:(NSString*)key{
    // judge nil
    if(![self objectForKey:key]){
        return NO;
    }
    // judge NSNull
    id obj = [self objectForKey:key];
    
    BOOL isNull = [obj isEqual:[NSNull null]];
    return isNull;
}

第二次崩溃也是类似的问题,只不过value是整数,但是iOS控制台获取到的是long型,就按照long型处理了:

  if([dic isNullValueForKey:@"xxx"]){
      return;
  }
  long skipType = [dic[@"xxx"] longValue];

暂时这么处理的,有问题继续补充

你可能感兴趣的:(NSMethodSignature signatureWithObjCTypes:)