#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]
. В противном случае произойдет утечка или перезапуск.