在元组中存储指向布尔值的指针
Posted
技术标签:
【中文标题】在元组中存储指向布尔值的指针【英文标题】:Store a pointer to a boolean value in a tuple 【发布时间】:2016-10-28 22:38:31 【问题描述】:我的项目中有这样的东西:
struct buttonFlag
var flag: Bool
var button: UIButton
var bool1: Bool = false
var bool2: Bool = false
var bool3: Bool = false
var obj1: UIButton = UIButton()
var obj2: UIButton = UIButton()
var obj3: UIButton = UIButton()
let buttonFlags: buttonFlag = [buttonFlag(bool1, obj1), buttonFlag(bool2, obj2), buttonFlag(bool3, obj3)]
我不希望将值 boo1 和 flag 分开处理,而是希望 flag 的值是对布尔值 (bool1..3) 的值的某种引用。 是否有任何内存有效的方法来做到这一点?
【问题讨论】:
你的问题真的不清楚。可以补充一下吗? Swift 中的指针...?你确定这是你想要的吗? 您能否发布您现在拥有的代码并指出您认为问题出在哪里? 听起来您可能想要声明一个结构数组(其中包含按钮和布尔值作为成员)而不是使用元组。 您可能想要一本[UIButton:Bool]
的字典吗?
【参考方案1】:
如果您只是想要一个与UIButton
的每个实例相关联的实例唯一布尔标志,您可以简单地将后者子类化,将单个Bool
属性添加到派生类。
class MyUIButton: UIButton
var flag: Bool = false
您可以像对待父类实例一样对待自定义子类 MyUIButton
的实例,此外,您现在可以访问每个按钮实例的 flag
属性。
人为的示例用法:
let btn1 = MyUIButton()
let btn2 = MyUIButton()
let btn3 = MyUIButton()
let buttons = [btn1, btn2, btn3]
btn1.flag = true
btn3.flag = true
for btn in buttons where btn.flag
// ... do something with btn1 and btn3
【讨论】:
这不能解决我的问题,因为我仍然需要更改两个变量的值。 @Raoul 我可能会误解你想要什么:但无论你的方法如何,如果你想知道按钮是否被点击(并将这些知识存储在一些bool
实例中) ,您至少需要一个与该按钮实例相关联的属性,和/或在按钮发生某些事件(例如单击)的情况下触发某个目标的操作。鉴于此,设置触发这些事件的按钮实例的单个属性是一件容易的事。
感谢您的回答。我重新考虑了我的方法并得出结论,使用 UIButton 的子类来存储标志可能更合理、更容易。以上是关于在元组中存储指向布尔值的指针的主要内容,如果未能解决你的问题,请参考以下文章