Проверка, изменилось ли значение — Objective-C Mac OSX

#objective-c #macos #nstimer

#objective-c #macos #nstimer

Вопрос:

 theTimer = [NSTimer scheduledTimerWithTimeInterval:1.00 target:self selector:@selector(sendMessageHandler:) userInfo:nil repeats:YES];

//////////////////////////////////////////////////////

- (void)sendMessageHandler (NSTimer *) timer {

}
  

Итак, sendMessageHandler запускается каждую секунду. Но теперь я хочу, чтобы он проверил значение «theString», и если оно изменило значение с предыдущего запуска, сделайте что-нибудь.

Кто-нибудь может мне помочь?

Спасибо!

Комментарии:

1. Отличная статья … действительно показывает мою проблему, да. Извините, что я публикую 1000 вопросов, но это мое первое действительно ОГРОМНОЕ приложение.

Ответ №1:

Создайте другую строку с именем prevString.

Изначально сделайте их равными друг другу. Затем в таймере:

 if ([theString isEqualToString:prevString]) {
    //No change.
}
else {
    //Change happened.
    prevString = theString;
}
  

И для управления памятью в dealloc:

 [theString release];
[prevString release];
  

Комментарии:

1. Вы ошибаетесь. Вы должны освободить старое значение prevString перед присвоением нового значения, и вы должны сохранить новое значение (через [theString copy] . В противном случае произойдет утечка или перезапуск.