Swift – 在getter上返回自身属性并将其自身设置为setter
发布时间:2020-12-14 04:40:18 所属栏目:百科 来源:网络整理
导读:无论如何要在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,我得到:
当我尝试编译项目时. 我正在尝试这样做,因为我不想创建额外的私有属性来存储get和set.我正在寻找是否有不同的东西来实现这一目标. 解决方法
编辑:我注意到你说你不想创造一个额外的私人财产.对不起不可以.除非你把它作为一个NSManagedObject子类(并挂钩到willAccessValueForKey系统),否则挂钩到NSObject上的ObjC运行时(你可以调用你自己的getter来增加日志记录;不要笑,我是之前完成的).但是所有这些方法在Swift中都是疯狂的(在ObjC中是疯狂的;我只用它们进行调试).只需制作支持变量即可.
如果你只想记录setter,那么这很简单:使用willSet而不是set.但是记录getter需要手动实现.您可以使用私有支持变量. private var _internetConnectionAvailable: Bool private(set) var internetConnectionAvailable: { get { logger.debug("verifying internet connection") return _internetConnectionAvailable } set { logger.debug("changing internet connection") _internetConnectionAvailable = newValue } } 一旦你定义了自己,你就说你不想要默认处理,这意味着你没有得到自动支持变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |