animator.startAnimation -- 这个警告是什么意思?
animator.startAnimation -- What does this warning mean?
我正在尝试学习如何在 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;' 上有一条警告说 "Property access result unused - getters should not be used for side effects"。 属性 访问结果指的是什么?我应该怎么写才不会收到警告?
startAnimation
是一种方法,而不是 属性。你应该写:
[animator startAnimation];
虽然 Objective-C 确实允许您在调用不带参数的方法时使用 属性 语法,但您的用法就像您试图读取 属性 值一样。但是由于(显然)您没有尝试存储结果(没有),编译器会抱怨您忽略了访问的值。
只要避免错误的语法,就可以避免问题。
顺便说一句,您声称该行:
UIViewPropertyAnimator *animator;
在 @implementation
/ @end
对之外。这使它成为一个文件全局变量。那是你真正想要的吗?如果你想让它成为 class 的实例变量(这可能是你真正想要的),它应该是:
@implementation YourClass {
UIViewPropertyAnimator *animator; //instance variable
}
// your methods
@end
我正在尝试学习如何在 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;' 上有一条警告说 "Property access result unused - getters should not be used for side effects"。 属性 访问结果指的是什么?我应该怎么写才不会收到警告?
startAnimation
是一种方法,而不是 属性。你应该写:
[animator startAnimation];
虽然 Objective-C 确实允许您在调用不带参数的方法时使用 属性 语法,但您的用法就像您试图读取 属性 值一样。但是由于(显然)您没有尝试存储结果(没有),编译器会抱怨您忽略了访问的值。
只要避免错误的语法,就可以避免问题。
顺便说一句,您声称该行:
UIViewPropertyAnimator *animator;
在 @implementation
/ @end
对之外。这使它成为一个文件全局变量。那是你真正想要的吗?如果你想让它成为 class 的实例变量(这可能是你真正想要的),它应该是:
@implementation YourClass {
UIViewPropertyAnimator *animator; //instance variable
}
// your methods
@end