加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift – 属性上的定制设置器

发布时间:2020-12-14 05:50:28 所属栏目:百科 来源:网络整理
导读:我正在将项目转换为Swift代码,并在设定者中遇到问题。我的Objective-C代码看起来像这样: - (void)setDocument:(MyDocument *)document{ if (![_document isEqual:document]) { _document = document; [self useDocument]; }} 并允许我的View Controller在
我正在将项目转换为Swift代码,并在设定者中遇到问题。我的Objective-C代码看起来像这样:
- (void)setDocument:(MyDocument *)document
{
    if (![_document isEqual:document]) {
        _document = document;

        [self useDocument];
    }
}

并允许我的View Controller在每次设置文档时运行(通常在演示View Controller的prepareForSegue:方法中)。

我发现属性观察者willSet和didSet,但它们只在属性被更新时才起作用,而不是在初始化和更新时。

有任何想法吗?谢谢

UPDATE

尝试获取{}并设置{}后,我得到EXC_BAD_ACCESS错误

var document: UIDocument? {
    get {
        return self.document!
    }
    set {
        self.document = newValue

        useDocument()
    }
}
你不能使用这样的设置,因为当你调用self.document = newValue时,你只是再次调用setter;你创建了一个无限循环。

您需要做的是创建一个单独的属性来实际存储值:

private var _document: UIDocument? = nil
var document: UIDocument? {
    get {
        return self._document
    }
    set {
        self._document = newValue
        useDocument()
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读