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
将 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