iPhone UIActivityIndicatorView, не запускающийся или останавливающийся

В C, goto только работы в рамках текущей функции, которая имеет тенденцию локализовать любые потенциальные ошибки. setjmp и longjmp намного более опасны, будучи нелокальным, сложным и зависящим от реализации. На практике однако они являются слишком неясными и редкими для порождения многих проблем.

я полагаю, что опасность goto в C значительно преувеличена. Помните, что исходные goto аргументы произошли назад в эпоху языков как ОСНОВНОЙ старомодный, где новички запишут запутанный код как это:

3420 IF A > 2 THEN GOTO 1430

Здесь Linus описывает соответствующее использование goto: http://www.kernel.org/doc/Documentation/CodingStyle (глава 7).

8
задан jonnyv 4 December 2009 в 23:53
поделиться

3 ответа

Если вы пишете такой код:

- (void) doStuff
{
    [activityIndicator startAnimating];
    ...lots of computation...
    [activityIndicator stopAnimating];
}

Вы не даете пользовательскому интерфейсу время чтобы фактически запустить и остановить индикатор активности, потому что все ваши вычисления выполняются в основном потоке. Одно из решений - вызвать startAnimating в отдельном потоке:

- (void) threadStartAnimating:(id)data {
    [activityIndicator startAnimating];
}

- (void)doStuff
{ 
    [NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:nil];
    ...lots of computation...
    [activityIndicator stopAnimating];
}

Или вы можете поместить свои вычисления в отдельный поток и дождаться его завершения перед вызовом stopAnimation.

16
ответ дан 5 December 2019 в 05:34
поделиться

Обычно я делаю:

[activityIndicator startAnimating];
[self performSelector:@selector(lotsOfComputation) withObject:nil afterDelay:0.01];

...

- (void)lotsOfComputation {
    ...
    [activityIndicator stopAnimating];
}
12
ответ дан 5 December 2019 в 05:34
поделиться

Хорошо, извините, кажется, я просмотрел свой код, будучи слепым.

Я закончил индикатор вот так:

    [activityIndicator removeFromSuperview];
activityIndicator = nil;

Итак, после одного прогона активностьIndicator была полностью удалена.

0
ответ дан 5 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: