Swift – 属性上的定制设置器

Swift – 属性上的定制设置器,第1张

概述我正在将项目转换为Swift代码,并在设定者中遇到问题。我的Objective-C代码看起来像这样: - (void)setDocument:(MyDocument *)document{ if (![_document isEqual:document]) { _document = document; [self useDocument]; 我正在将项目转换为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? = nilvar document: UIdocument? {    get {        return self._document    }    set {        self._document = newValue        usedocument()    }}
总结

以上是内存溢出为你收集整理的Swift – 属性上的定制设置器全部内容,希望文章能够帮你解决Swift – 属性上的定制设置器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存