问题标签 [property-observer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 结构不在新对象上调用属性观察者
在这段代码中,我想在property observers
创建新对象时调用。我如何实现这一目标?
这是我到目前为止所拥有的:
swift - swift 协议的默认变量逻辑
我有一个协议
和扩展:
- 当
value
设置为 时true
,我想foo()
被调用 - 当
value
设置为 时false
,我想bar()
被调用
但是,我不想didSet{ }
在每个符合的类中冗余地实现逻辑Example
但是,如果我尝试didSet{ }
在扩展中添加逻辑,Xcode 会说“扩展不能包含存储的属性”。
添加默认属性观察逻辑而不必复制/粘贴到每个符合的类中的最佳实践是什么?
目标:
我希望任何子类都UIView
符合我的协议Expandable
。我的协议的要求是isExpanded: Bool
、expand()
和collapse
。我想isExpanded = true
打电话expand()
,isExpanded = false
打电话collapse()
(很像设置的行为isHidden
)。但是对于 UIView 的每个子类,我不想重写任何逻辑。我只想让课程符合Expandable
,然后直接进入设置isExpanded
。
arrays - 为什么我不能在其 willSet 事件中从数组中删除元素?
逻辑是在数组具有指定数量的元素时清除它。我可以将检查放在 Array 之外,但我试图在 Array 的 willSet 事件中查看是否执行此操作。结果是 Array 中的元素保持静止。
这是代码
MyArr 预计只有一个元素,而实际结果是四个。
swift - 物业观察员 Swift 4
***更新**** 我遇到的问题是当我使用 func listFoodItems() 更新的属性 itemQuantity 不会改变。我想知道如何更新集合,所以当我调用 func listFoodItems() 时,它会显示值更改。
删除是可以的,当函数运行时,集合会删除对象。问题一定是因为我使用 for item in foodItems 来显示,我需要在执行此操作之前使用更新的值重新加载它?
感谢您提供任何帮助。
swift - 我可以在 deinit 中使用 didSet 吗?
我在我的类中添加了一个 Timer 变量,并使用它的 didSet 观察者使旧值无效
我认为这足以在类被取消初始化时使计时器无效,但看起来没有调用 didSet。这是为什么?观察者在反初始化期间不工作吗?
ios - 在 Swift 中创建属性观察者
Property Observers
当变量值发生变化时,我一直在使用它来操作 UI 和对象。didSet
考虑到这一点,我想知道是否可以willSet
为我自己的对象创建我自己的 Property Observers。我正在寻找的是能够写出这样的东西:
如您所知didSet
并且willSet
不跟踪例如将元素添加到数组但跟踪整个数组值的变化。我期待着使用属性观察器来扩展它。我查看了有关闭包和属性的文档,但找不到任何提示。
我的问题是,我如何创建属性观察者?我以上面的一个用例为例,但我的目标是创建自己的观察者。
swift - 在 Swift 中观察超类的实例变量
假设我已经继承了一个 Cocoa 类或 Foundation 类。在我的情况下CALayer
:
现在我想为类的属性添加一个didSet
观察者。那可能吗?position
CALayer
swift - deinit 末尾的 Defer 语句会产生警告
自Xcode 10.2 (Swift 5)起,作用域defer
末尾的语句产生:deinit
作用域结束前的“defer”语句总是立即执行;替换为“do”语句以消除此警告
让我们看一下这个例子:
- 当然,可以通过将代码从观察者移动到方法并显式调用它来消除此警告,但是……</li>
这个警告有什么意义?defer
- 将声明放在 中是否合理deinit
?(例如,能够触发属性的观察者)。
swift - Swift 在 2 bool didset 调用后调用一个方法
我有 2 个带有 didset 方法的布尔值。在两个 didset 内部,它调用了相同的方法。所以我想在调用了 2 个 bool 集合之后调用一个方法
swift - 在文本中设置后未调用 UILabel didSet 属性文本:didSet
在 UILabel 的子类中,我在文本上添加格式并按以下方式设置属性文本
我也有一些代码,attributedText - didSet:
但在设置文本后不会调用它。我不知道为什么。有什么遗漏吗?