我有一个通用的基类我的应用程序。基本通用类需要一个协议才能将消息发送回控制器。在协议继承中使用泛型类在归档应用程序时出现分段错误11错误
一切工作正常,但一旦我尝试归档应用程序,我得到分段故障:11的编译器错误
我在SWIFT相当新的,因为我从.NET来了,所以可能是别的东西,我错过了,但我没有找到有关该问题的任何答案了
下面是代码我怎么能重现问题
class BaseClass{
@objc func myFunction(){
}
}
class ClassA<T : ProtocolA> : BaseClass{
var delegate: T?
override func myFunction(){
super.myFunction()
self.delegate?.funcA?()
}
}
class ClassB : ClassA<ProtocolB>{
override func myFunction() {
super.myFunction()
self.delegate?.funcB?()
}
}
@objc protocol ProtocolA{
@objc optional func funcA()
}
@objc protocol ProtocolB : ProtocolA{
@objc optional func funcB()
}
正如我看到的问题是周围的泛型类型代表变量在ClassA的,但是如果super.myFunction()调用在ClassB的代码构建注释掉正确
我注意到其他的事情,如果我设置的优化级别从快速,整个模块优化到无那么我也可以成功存档
更新1
我简化了代码多一点并且还我想出如果我使用的类,而不是协议作为通用参数编译器可以优化代码和如预期
更新2 这里是编译消息
工作0 swift 0x0000000104ae7dba PrintStackTraceSignalHandler(void*) + 42
1 swift 0x0000000104ae71f6 SignalHandler(int) + 662
2 libsystem_platform.dylib 0x00007fff7b8a8f5a _sigtramp + 26
3 libsystem_platform.dylib 0x00007ffeee8182e8 _sigtramp + 1928786856
4 swift 0x00000001014b4ca8 swift::irgen::CallEmission::emitToExplosion(swift::irgen::Explosion&) + 456
5 swift 0x0000000101613aca (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 3290
6 swift 0x00000001015f2a80 swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 9152
7 swift 0x00000001014fd4be swift::irgen::IRGenerator::emitGlobalTopLevel() + 1022
8 swift 0x00000001015d28c5 swift::performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, llvm::LLVMContext&, llvm::GlobalVariable**) + 1589
9 swift 0x000000010145b26a performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 17018
10 swift 0x0000000101455784 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7716
11 swift 0x000000010140a6a8 main + 12248
12 libdyld.dylib 0x00007fff7b628145 start + 1
13 libdyld.dylib 0x0000000000000048 start + 2224914180
的错误信息是:
1. While emitting IR SIL function "@_T012BugReproduce6ClassBC10myFunctionyyF".
for 'myFunction()' at /Users/pal.wagner/sources/playgrounds/BugReproduce/BugReproduce/Imps.swift:20:14
谢谢!