Проблемы с NSInvocation NSTimer и NSMethodSignature - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь получить кнопку для создания NSTimer, который, в свою очередь, вызовет функцию (refreshView) для обновления элементов пользовательского интерфейса, но у меня возникают проблемы, и я не уверен, в чем проблема.Подпись метода неверна?Или я неправильно понял часть NSRunLoop?Или это просто ужасно с базы?Любая помощь приветствуется.

-(IBAction)reload:(id)sender{
NSInvocation *displayInvocation = [NSInvocation invocationWithMethodSignature:[self     methodSignatureForSelector:@selector(refreshView)]];
[displayInvocation setTarget:self];
NSTimer *slideShowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
                                                     invocation:displayInvocation
                                                          repeats:YES];
[slideShowTimer fire];
NSRunLoop * a = [NSRunLoop currentRunLoop];
[a addTimer:slideShowTimer forMode:NSRunLoopCommonModes];}

-(void)refreshView{
[slideshow1 displayWithView:MajorImageView topicLabel:TopicLabel];
}

1 Ответ

2 голосов
/ 11 февраля 2012

Ваш код кажется очень сложным ни за что. Вы хотите (1) запустить таймер для периодического вызова [refreshView] или (2) вызвать его позже.

Для (1) просто установите таймер с помощью,

[NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)seconds 
                                 target:(id)target 
                               selector:(SEL)aSelector 
                               userInfo:(id)userInfo 
                                repeats:(BOOL)repeats]

Нет необходимости использовать вызов метода, цели / действия будет достаточно

Для (2), если вы хотите позвонить позже,

[NSObject performSelector:(SEL)aSelector 
               withObject:(id)anArgument 
               afterDelay:(NSTimeInterval)delay]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...