【发布时间】:2019-04-02 13:03:08
【问题描述】:
在将 Xcode 更新到 10.2 后,我遇到了奇怪的崩溃。我有一个如下的Objective-C类方法
@interface Car: NSObject
+ (NSDictionary<NSString *, Class> *) carMapping;
@end
返回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) 崩溃。我没有任何线索。
我无法控制班级Car。我将如何处理这种情况?
【问题讨论】:
-
实际上该函数签名表示它返回一个字典,而不是字典数组。您应该将
carMapping()方法的主体以及整个接口发布到您的Car类。 -
@DuncanC,对不起!我写这个问题时不好。已更正
-
在 Objective-c 中你是如何调用 carMapping 的?你清理项目并重建它了吗?
-
@E.Coms 是的。尝试了我能做的一切。我没有在 Objective C 中调用 carMapping,而是在 Swift 类中调用。
-
这仍然不是字典数组。您的函数返回
[String: Class]类型的字典。
标签: ios objective-c swift xcode xcode10.2