gpt4 book ai didi

ios - animator.startAnimation -- 这个警告是什么意思?

转载 作者:行者123 更新时间:2023-12-01 19:42:11 24 4
gpt4 key购买 nike

我正在尝试学习如何在 objc 中使用 UIViewPropertyAnimator。我用一个名为“blueBox”的对象制作了一个简单的测试应用程序。我想改变 blueBox 的属性。

我在@implementation 之外声明'animator' ... @end:

UIViewPropertyAnimator *animator;

然后像这样定义它:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect newFrame = CGRectMake(150.0, 350.0, 100.0, 150.0);
animator = [[UIViewPropertyAnimator alloc]
initWithDuration:2.0
curve:UIViewAnimationCurveLinear
animations:^(void){
self.blueBox.frame = newFrame;
self.blueBox.backgroundColor = [UIColor redColor];
}];
}

当我想使用它时,我会写:
animator.startAnimation;

它按预期工作(更改对象的颜色和框架),但在 'animator.startAnimation;' 上有警告上面写着“未使用的属性访问结果 - 不应将 setter/getter 用于副作用”。指的是什么属性访问结果?我应该怎么写这样我就不会收到警告?

最佳答案

startAnimation是一种方法,而不是一种属性。你应该写:

[animator startAnimation];

尽管 Objective-C 确实允许您在调用不带参数的方法时使用属性语法,但您的使用就像您试图读取属性值一样编写。但是由于(显然)您没有尝试存储结果(没有结果),编译器会提示您忽略了访问的值。

只需避免错误的语法,就可以避免问题。

顺便说一句,您声称该行:
UIViewPropertyAnimator *animator;

@implementation 之外/ @end一对。这使它成为一个文件全局变量。那是你真正想要的吗?如果您希望它成为类的实例变量(这可能是您真正想要的),它应该是:
@implementation YourClass {
UIViewPropertyAnimator *animator; //instance variable
}

// your methods

@end

关于ios - animator.startAnimation -- 这个警告是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53787896/

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