首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKPlacemark()创建保留周期

MKPlacemark()创建保留周期
EN

Stack Overflow用户
提问于 2020-07-27 10:16:37
回答 1查看 47关注 0票数 1

我有一个@State属性,它是用我创建的结构(地标)初始化的,该结构接受一个MKPlacemark。

代码语言:javascript
复制
@State private var selectedLandmark: Landmark = Landmark(placemark: MKPlacemark())

下面是该结构的代码:

代码语言:javascript
复制
import Foundation
import MapKit

struct Landmark {

let placemark: MKPlacemark

var id: UUID {
    UUID()
}

var name: String {
    placemark.name ?? ""
}

var title: String {
    placemark.title ?? ""
}

var coordinate: CLLocationCoordinate2D {
    placemark.coordinate
}
}

每当这个视图中的任何状态/绑定变量有任何更新时,我都会得到一个EXC_BAD_ACCESS错误,并且没有日志。如果我删除对MKPlacemark的引用,一切都会正常工作。这可能是强引用被保留在某个地方的情况吗?

重现步骤:

创建一个“子”视图:

代码语言:javascript
复制
import SwiftUI
import MapKit

struct MKPlaceChild: View {
    @Binding var showCreateEvent: Bool
    @State private var selectedLandmark: Landmark = Landmark(placemark: MKPlacemark())

var body: some View {
    VStack {
        Text("Hello, World!")
        
        Button("Cancel") {
            self.showCreateEvent = false
        }
    }
}
}

创建父视图:

代码语言:javascript
复制
struct MKPlaceParent: View {
    @State var showCreateEvent: Bool = true
    var body: some View {
        VStack {
            if showCreateEvent {
                MKPlaceChild(showCreateEvent: $showCreateEvent)
            } else {
                Text("Hello")
            }
        }
    }
}

如果你点击“取消”按钮,会出现一个错误:(如有任何帮助,我们将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 11:28:28

问题在错误的初始化器中。这里是固定的部分(用Xcode12/ iOS 14测试)

代码语言:javascript
复制
struct MKPlaceChild: View {
    @Binding var showCreateEvent: Bool
    @State private var selectedLandmark: Landmark = Landmark(placemark: 
          MKPlacemark(coordinate: CLLocationCoordinate2D()))      // << here !!
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63107790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档