Objective-C 方法返回 Class 的字典在 Xcode 10.2 中崩溃

Objective-C method returning a dictionary of Class crashes in Xcode 10.2

将 Xcode 更新到 10.2 后,我遇到了奇怪的崩溃。我有一个 Objective-C class 方法如下

@interface Car: NSObject 

+ (NSDictionary<NSString *, Class>  *) carMapping;

@end

returns 类型 NSDictionary<NSString *, Class> 的字典如下

@implementation Car

+ (NSDictionary<NSString *, Class>  *) carMapping {
    return @{
        @"BMW": [BMWCar class],
        @"Mercedes": [MercedesCar class],
        @"Toyota": [ToyotaCar class],
        @"Tesla": [TeslaCar class]
        };
}

@end

我在Swift中使用这个Objective-C方法作为

let carMapping = Car.carMapping()
print(carMapping)

与 Xcode 10.1.

完美配合

但是在将 Xcode 更新到 10.2 后,应用程序崩溃并在第 1 行显示 Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)。我没有任何线索。

我无法控制 class Car。我将如何处理这种情况?

如果您想在swift中轻松使用class,只需将接口中的签名从Class更改为id。在实现中,你不需要改变。

 @interface Car : NSObject
 + (NSDictionary<NSString *, id>  *) carMapping ;
 @end