在我的代码中,我有一个惰性变量:
lazy var myService = {
return JSObjection.defaultInjector().getObject(MyService) as? MyService
}()
在同一个文件中,我尝试调用以下函数myService
:
func foo() {
myService?.getSomeStringsFrom(nil)
}
MyService 在 Objective-C 源文件中定义:
@interface MyService : NSObject
- (NSArray *) getSomeStringsFrom:(NSString *)aString;
@end
@implementation MyService
- (NSArray *) getSomeStringsFrom:(NSString *)aString {
return nil;
}
@end
代码无法编译,因为调用getSomeStringsFrom(nil)
触发了错误信息(两次):
<unknown>:0: error: 'Int' is not convertible to 'ObjCBool'
这没有任何意义——我对其他服务也做同样的事情,XCode 没有抱怨它。它是编译器错误吗?我正在使用 XCode 6.4 和 Swift 1.2。
编辑:在对代码进行更多挖掘之后,我发现错误消息也可以通过实例化来触发MyService
。在下面的答案中,您将看到问题的真正“根源”。