animator.startAnimation - Что означает это предупреждение? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь узнать, как использовать UIViewPropertyAnimator в объекте.Я сделал простое тестовое приложение с объектом под названием «blueBox».Я хочу изменить свойства blueBox.

Я объявляю 'аниматор' вне @implementation ... @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;'что говорит "Результат доступа к свойству не используется - геттеры не должны использоваться для побочных эффектов".К какому результату доступа к свойствам относится эта ссылка?Как мне написать это, чтобы я не получил предупреждение?

1 Ответ

0 голосов
/ 15 декабря 2018

startAnimation это метод, а не свойство.Вы должны написать:

[animator startAnimation];

Хотя Objective-C позволяет использовать синтаксис свойства при вызове метода, который не принимает параметров, ваше использование написано так, как будто вы пытаетесь прочитать значение свойства.Но поскольку (очевидно) вы не пытаетесь сохранить результат (его нет), компилятор жалуется, что вы игнорируете значение, к которому обращались.

Просто избегайте неправильного синтаксиса и избегайте проблемы.

Кстати, вы утверждаете, что строка:

UIViewPropertyAnimator *animator;

находится вне пары @implementation / @end.Это делает его глобальной переменной файла.Это то, что вы действительно хотите?Если вы хотите, чтобы это была переменная экземпляра класса (что, вероятно, вам действительно нужно), она должна быть:

@implementation YourClass {
    UIViewPropertyAnimator *animator; //instance variable
}

// your methods

@end
...