2012-01-12 4 views
0

Я создал пользовательский класс, которые показывают дату времени форматировщик и мне нужен таймер, как метод для обновления секунд, так вот мой код:Обновление NSDateFormatter с NSTimer

CustomClass.m

- (NSString *) showLocaleTime { 

      NSDateFormatter *timeFormater = [[NSDateFormatter alloc] init]; 
timeFormater = [setDateFormat:@"HH:mm:ss "]; 

NSString *currDay = [timeFormater stringFromDate:[NSDate date]]; 
currDay = [NSString stringWithFormat:@"%@",currDay]; 
[timeFormater release]; 


    return timer; 
} 


- (void) updateLocaleTime { 

    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showLocaleTime) userInfo:nil repeats:YES]; 

} 

viewController.m:

CustomClass *time = [[CustomClass alloc]init]; 
label.text = [time showLocaleTime]; 

[time updateLocaleTime]; 

Но проблема заключается в updateLocaleTime не вызывает обновление секунд! я что-то упускаю ? Спасибо

ответ

1

Вместо того, чтобы звонить updateLocaleTime в CustomClass, просто запустите таймер в самом контроллере представления.

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateLocaleTime) userInfo:nil repeats:YES]; 

Добавить updateLocaleTime метод в viewController

- (void) updateLocaleTime { 

    CustomClass *time = [[CustomClass alloc]init]; 
    label.text = [time showLocaleTime]; 
    [time release]; 
} 

Но здесь мы выделяем и отпуская CustomClass снова и снова на каждые 0,5 секунды. Вместо этого вы объявляете его как член класса, в .h файле и выделяете его в viewDidLoad.

Поэтому нет необходимости выделять в updateLocaleTime метод. Также отпустите это time в методе viewDidUnload.

+0

есть ли способ назвать этот метод, как я уже сказал? : -s Мне это нужно, его публичный API для моих друзей Мне нужно, чтобы это было очень просто –

+1

Как сказал Эйнштейн, все должно быть сделано максимально простым, но не проще. –

+0

Спасибо, но я получил 'SIGABRT' !!? –

0

Где вы обновляете текст ярлыка, после вычисления нового времени? (Затем вы вычисляете новое время, но оно падает на пол.)

Например, добавьте label.text = timer; к вашему методу showLocalTime и пропустите возврат timer.

+0

in 'viewDidLoad' –

+0

Ничего не изменилось! –

+0

После обновления текстового значения вам может понадобиться 'setNeedsDisplay'. –

Смежные вопросы