Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我们是否总是需要在持久属性中保留动画?_Ios_Swift_Animation_Uiviewpropertyanimator - Fatal编程技术网

Ios 我们是否总是需要在持久属性中保留动画?

Ios 我们是否总是需要在持久属性中保留动画?,ios,swift,animation,uiviewpropertyanimator,Ios,Swift,Animation,Uiviewpropertyanimator,目前我正在读马特·纽堡的一本非常有趣的书。但我坚持在这一刻: 在最简单的情况下,您只需启动动画并后退, 正如我前面所展示的: let anim = UIViewPropertyAnimator(duration: 1, curve: .linear) { self.v.backgroundColor = .red } anim.startAnimation() 在该代码中,UIViewPropertyAnimator对象anim被实例化为局部变量,而我们不是 将其保留

目前我正在读马特·纽堡的一本非常有趣的书。但我坚持在这一刻:

在最简单的情况下,您只需启动动画并后退, 正如我前面所展示的:

let anim = UIViewPropertyAnimator(duration: 1, curve: .linear) {
    self.v.backgroundColor = .red    
}    
 anim.startAnimation()
在该代码中,UIViewPropertyAnimator对象anim被实例化为局部变量,而我们不是 将其保留在永久性财产中;然而,动画之所以有效,是因为 动画服务器将保留它


当我们以上述方式使用动画时,是否需要将其保留在持久属性中?如果我们不将动画保留在持久属性中,为什么动画(在其他情况下似乎)不应该工作?我想我不明白还有谁读过这本书?

马特的观点是,你不需要保留一个参考来完成动画。他不是说你不能保留推荐人,只是说你不必保留

你问:

当我们以[上述]方式使用动画时,是否需要将其保留在持久属性中

不,不需要“保留”它,它就可以继续设置动画

您可能会问为什么要保留引用:如果希望在动画已经开始后暂停或停止引用、拖动引用或其他任何操作,您可以这样做

底线是,如果你因为其他原因需要一个参考,好吧,保留一个参考。否则,只需将其设置为局部变量并启动即可

如果我们不将动画保留在持久属性中,为什么动画(在其他情况下似乎)不应该工作


他不是这么说的。他说的恰恰相反,也就是说,你不必为了动画的继续而保留一个强有力的引用。如果出于其他原因需要,请保留一份参考资料,但这不仅仅是为了确保动画继续播放。

非常感谢@Rob!事实上,我对这句话感到困惑:“动画之所以有效,是因为动画服务器保留了它。”我们在一些函数中实例化为一个局部变量动画类,我认为已经有一个对动画类的强烈引用,为什么他还使用word?ARC在这种情况下不是0,那么为什么我们需要保留动画服务器呢?他的全部观点是,当你开始动画时,“动画服务器”保留它自己对它的强引用,所以你不必这样做。他用“还”这个词是说“嘿,你可能认为你需要保留你自己的强引用来防止这个被释放,但你没有。”他这样写道,就好像在前面提到的情况下需要早期的人来创建引用一样