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() } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |