Здесь у меня есть что-то вроде:
void start() { for (id i in something) { [i start]; } }
void finish() { for (id i in something) { [i finish]; } }
static NSTimer *timer = nil;
@implementation aClass
- (void)start {
if (!timer) timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(change) userInfo:nil repeats:YES];
}
- (void)change { /* ... */ }
- (void)finish { [timer invalidate]; }
@end
Обратите внимание, что я не могу использовать ivars, и, как вы можете предположить, существует множество aClass
экземпляров, в которых вызывается -start
.
Я думаю, что здесь я сталкиваюсь с проблемой, связанной с моей собственной логикой, поскольку только один единственный экземпляр (первый вызвавший -start
) получает одновременно -change
. Это не проблема с другими экземплярами, так как если я удалю первый объект из массива something
, то второй будет в порядке, а другие столкнутся с проблемами.
Я просто совершаю очевидную ошибку? (Я думаю, я пытаюсь использовать один и тот же глобал для каждого экземпляра ...). И как я могу исправить такую проблему?