如何解决TableView Getter的Swift 5.3编译器崩溃
在执行xcodebuild时,编译器在声明tableView的第一行下方崩溃。
var tableView: UITableView? { get { var table: UIView? = superview while !(table is UITableView) && table != nil { table = table?.superview } return table as? UITableView } }
这是编译器崩溃的堆栈跟踪
2. Apple Swift version 5.3 (swiftlang-1200.0.28.1 clang-1200.0.30.1)
3. While evaluating request ExecuteSILPipelineRequest(Run pipelines { EarlyModulePasses,HighLevel+EarlyLoopOpt,MidModulePasses+StackPromote,MidLevel,ClosureSpecialize,LowLevel,LateLoopOpt,SIL Debug Info Generator } on SIL for TestApp.TestApp)
4. While running pass #835 SILFunctionTransform "SimplifyCFG" on SILFunction "@$s10TestApp31EditProfileAboutMeTableViewCellC05tableH0So07UITableH0CSgvg".
for getter for tableView (at /Users/madhu/Downloads/Agent/_work/3/s/TestApp/MoreTab/Views/EditProfileAboutMeTableViewCell.swift:26:9)
0 swift 0x0000000104b05a85 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1 swift 0x0000000104b04a85 llvm::sys::RunSignalHandlers() + 85
2 swift 0x0000000104b0603f SignalHandler(int) + 111
3 libsystem_platform.dylib 0x00007fff6b2f8d7d _sigtramp + 29
4 libsystem_platform.dylib 0x0000000106d58400 _sigtramp + 18446603343127508640
5 swift 0x0000000100ef207a (anonymous namespace)::SimplifyCFG::simplifyBlocks() + 2458
6 swift 0x0000000100eea847 (anonymous namespace)::SimplifyCFG::run() + 119
7 swift 0x0000000100eea79a (anonymous namespace)::SimplifyCFGPass::run() + 890
8 swift 0x0000000100e0e97b swift::SILPassManager::runFunctionPasses(unsigned int,unsigned int) + 4299
9 swift 0x0000000100e0ad5a swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 138
10 swift 0x0000000100e24bfc swift::SimpleRequest<swift::ExecuteSILPipelineRequest,std::__1::tuple<> (swift::SILPipelineExecutionDescriptor),(swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&,swift::Evaluator&) + 60
11 swift 0x0000000100e13155 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 1045
12 swift 0x0000000100e163b9 swift::runSILOptimizationPasses(swift::SILModule&) + 425
13 swift 0x00000001007aa14e swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 1358
14 swift 0x000000010067ccd8 performCompileStepsPostSILGen(swift::CompilerInstance&,swift::CompilerInvocation const&,std::__1::unique_ptr<swift::SILModule,std::__1::default_delete<swift::SILModule> >,llvm::PointerUnion<swift::ModuleDecl*,swift::SourceFile*>,swift::PrimarySpecificPaths const&,int&,swift::FrontendObserver*) + 1288
15 swift 0x000000010066cf98 swift::performFrontend(llvm::ArrayRef<char const*>,char const*,void*,swift::FrontendObserver*) + 20712
16 swift 0x00000001005ee277 main + 1255
17 libdyld.dylib 0x00007fff6b0ca851 start + 1
18 libdyld.dylib 0x0000000000000161 start + 18446603338720172305
解决方法
为了找到UITableViewCell
,我遇到了非常相似的代码。对我来说,解决方法是在while循环中使用一个临时变量,如下所示:
var tableView: UITableView? {
get {
var table: UIView? = superview
while !(table is UITableView) && table != nil {
let newSuperview = table?.superview
table = newSuperview
}
return table as? UITableView
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。