Swift – 在getter上返回自身属性并将其自身设置为setter

Swift – 在getter上返回自身属性并将其自身设置为setter,第1张

概述无论如何要在getter中返回自己的属性并将其设置在setter上?因为我只想在getter和setter中打印一个日志就可以了. 例如,我试图做这样的事情: private(set) var internetConnectionAvailable: Bool { get { logger.debug("verifying internet connection") 无论如何要在getter中返回自己的属性并将其设置在setter上?因为我只想在getter和setter中打印一个日志就可以了.

例如,我试图做这样的事情:

private(set) var internetConnectionAvailable: Bool {    get {        logger.deBUG("verifying internet connection")        // here return itself property    }    set {        logger.deBUG("changing internet connection")        // here set itself    }}

如果我在getter上返回self.internetConnectionAvailable,我得到:

linker command Failed with exit code 1

当我尝试编译项目时.

我正在尝试这样做,因为我不想创建额外的私有属性来存储get和set.我正在寻找是否有不同的东西来实现这一目标.

解决方法 编辑:我注意到你说你不想创造一个额外的私人财产.对不起不可以.除非你把它作为一个NSManagedobject子类(并挂钩到willAccessValueForKey系统),否则挂钩到NSObject上的ObjC运行时(你可以调用你自己的getter来增加日志记录;不要笑,我是之前完成的).但是所有这些方法在Swift中都是疯狂的(在ObjC中是疯狂的;我只用它们进行调试).只需制作支持变量即可.

如果你只想记录setter,那么这很简单:使用willSet而不是set.但是记录getter需要手动实现.您可以使用私有支持变量.

private var _internetConnectionAvailable: Boolprivate(set) var internetConnectionAvailable: {    get {        logger.deBUG("verifying internet connection")        return _internetConnectionAvailable    }    set {        logger.deBUG("changing internet connection")        _internetConnectionAvailable = newValue    }}

一旦你定义了自己,你就说你不想要默认处理,这意味着你没有得到自动支持变量.

总结

以上是内存溢出为你收集整理的Swift – 在getter上返回自身属性并将其自身设置为setter全部内容,希望文章能够帮你解决Swift – 在getter上返回自身属性并将其自身设置为setter所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1006322.html

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

发表评论

登录后才能评论

评论列表(0条)

保存