微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift UI-线程1:EXC_BAD_ACCESS代码= 2

如何解决Swift UI-线程1:EXC_BAD_ACCESS代码= 2

我在驱动器列表中添加了系统驱动器图标(NSImage)

现在应用程序在AppDelegate.swift中崩溃 在第13行 class AppDelegate: NSObject,NSApplicationDelegate {Thread 1: EXC_BAD_ACCESS (code=2,address=0x7ffeef3fff48)

我知道这是我要添加的图像,因为当我用文本替换它时就可以了

这是我添加图像的班级。

import SwiftUI

let workspace = NSWorkspace.init()

struct DriveList: View {
   let drives = SDCardTools.getDrives()!
   var body: some View {
       return List(drives) { drive in
           DriveRow(drive : drive)
       }
   }
}

struct DriveRow: View {
   var drive : Drive
   
   var body: some View {
       HStack {
           DriveIcon(path : drive.path)
               padding(10)
           Text(drive.name)
       }
   }
}

struct DriveIcon : View {
   
   var path: String
   var body: some View {
       Image(nsImage: workspace.icon(forFile: path ))
           .resizable()
           .frame(width: 50,height: 50)
   }
}

struct DriveList_Previews: PreviewProvider {
   static var previews: some View {
       DriveList()
   }
}

线程1队列:com.apple.main-thread(串行) #0 0x00007fff44382883在专门的静态EnvironmentReadingView._makeView(view:inputs :)() #1 0x00007fff44384668在协议见证中用于静态View._makeView(view:inputs :)一致性图像() #2 0x00007fff44384610在协议见证中用于静态View._makeView(view:inputs :)一致性图像() #3 0x00007fff441c20e9 in TypedUnaryViewGenerator.makeView(in:inputs:id:indirectMap :)() UnaryViewGenerator.makeView(in:inputs:id:indirectMap :)的协议见证中的#4 0x00007fff441c21f9符合TypedUnaryViewGenerator() #5 0x00007fff441bc9b0在UnaryElements.makeElements中的闭包#1中(from:in:inputs:indirectMap:body :)() #6 0x00007fff441c4801部分申请UnaryElements.makeElements中的封闭#1(from:in:inputs:indirectMap:body :)() #7 0x00007fff441bf61b在闭包中#1在闭包中#1在闭包中#1在闭包中#1在ModifiedElements.makeElements(来自:in:inputs:indirectMap:body :)() #8 0x00007fff441ce4c5部分申请闭包#1闭包#1闭包#1闭包#1的ModifiedElements.makeElements(from:in:inputs:indirectMap:body :)() #9 0x00007fff445adb15在专门的静态UnaryLayout 。makeViewImpl(modifier:inputs:body :)()中 #10 0x00007fff4430e339在专门的静态UnaryLayout._makeView(modifier:inputs:body :)() 协议见证中的#11 0x00007fff4430f101符合_AspectRatioLayout()的静态ViewModifier._makeView(modifier:inputs:body :) #12 0x00007fff4430eec8在协议见证中用于静态ViewModifier._makeView(modifier:inputs:body :)符合_FrameLayout() #13 0x00007fff441bf2a5在封闭中#1在封闭中#1在封闭中#1在ModifiedElements.makeElements(来自:in:inputs:indirectMap:body :)() #14 0x00007fff441ce43d部分申请ModifiedElements.makeElements中的封闭#1中的封闭#1中的封闭#1(from:in:inputs:indirectMap:body :)() #15 0x00007fff441813ef在静态_Layout 。makeStaticView(root:inputs:list :)()中的闭包#2中

感谢您能提供的任何帮助:)

解决方法

该错误非常令人困惑,这是由于padding修饰符的不可分割的性质导致的,并且编译器将其不用作修饰符而将其传递,从而导致崩溃。

这是固定的

struct DriveRow: View {
    var drive : Drive
    
    var body: some View {
        HStack {
            DriveIcon(path : drive.path)
                .padding(10)            // << in this line you missed '.' dot
            Text(drive.name)
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。