gpt4 book ai didi

ios - 修改属性会导致调用方法吗?

转载 作者:行者123 更新时间:2023-11-28 09:11:31 26 4
gpt4 key购买 nike

谁能解释一下为什么在 iOS 中

 var dx = (touchPoint.x - dragTouch.x) * self.transform.a
var dy = (touchPoint.y - dragTouch.y) * self.transform.d

self.transform.tx = self.transform.tx + dx
self.transform.ty = self.transform.ty + dy

if ( self.frame.origin.y > 70){ // lock upper edge during drag
self.frame.origin.y = 70
}

不同于

 var dx = (touchPoint.x - dragTouch.x) * self.transform.a
var dy = (touchPoint.y - dragTouch.y) * self.transform.d

if ( self.frame.origin.y > 70){ // lock upper edge during drag
self.frame.origin.y = 70
}

self.transform.tx = self.transform.tx + dx
self.transform.ty = self.transform.ty + dy

似乎修改属性会导致调用方法,从而重绘 View 。如果我使用第一个解决方案,我的 View 边缘将被锁定,否则,使用第二段代码,我会获得不同的行为。

你知道我怎样才能避免这个问题吗?

最佳答案

正如@HotLicks 所说的那样,后台可能正在发生一些事情。由于我们不知道实现细节,因此很难确定。

  • 选项#1 是@HotLicks 所说的:
    在这种情况下,有一个 private 属性,您只能通过 get 和/或 set 在不同的 中访问它公共(public)计算属性。
  • 选项 #2 几乎相同:
    该属性可能具有 willSet 和/或 didSet 属性观察器。这将是与选项 #1 相同原则的不同方法。

您可能无法避免这一点。但是您可能也不应该尝试这样做。实现原样通常是有原因的。拥有单独的 get/set 或属性观察器是一种以适合给定框架的方式约束您(程序员)的操作的方法。

关于ios - 修改属性会导致调用方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com