Pergunta

como usar como usar NSRunLoop em Objective-C e esperar por alguma variável ao valor de mudança?

Graças

Foi útil?

Solução

Nós normalmente não usar um NSRunLoop na produção de esperar por uma variável para a mudança. Pode-se usar uma chamada de retorno.

No entanto, no código de teste de unidade nós temos o seguinte:

NSDate *twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    while (!callBackInvoked && !errorHasOccured && runCount-- &&  [[NSRunLoop currentRunLoop]  runMode:NSDefaultRunLoopMode beforeDate:twoSecondsFromNow]) {
        twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    }

As esperas de código até que o nosso retorno de chamada é chamado, um erro ocorreu ou o número de 2 períodos segunda havíamos esperado ocorreu. Nós usamos isso para delegados de teste que fazem chamadas de retorno.

Como eu disse que não iria fazer isso no código de produção.

Outras dicas

Você geralmente não usaria NSRunLoop diretamente em seu código.

Você poderia, por exemplo, criar aplicativo GUI que já tem NSRunLoop nele (uso predefinidos modelos de código de aplicação em Xcode).

Depende do que a variável é que é suposto mudança, você pode tê-lo em algum lugar dentro do seu objeto 'Model' e vai ser alterado por alguns até como chegar de dados on-line, ou ligados a objeto GUI e fácil realizados ação.

  • Se é botão faria configuração manipuladores para invocar a ação.
  • Se é variável faria configuração KVC / KVO para detectar a mudança e chamada manipulador.

E assim por diante, Cocoa irá lidar com o código de cola para você, você só precisa de configuração apropriado manuseio para executar a ação.

Não há detalhes suficientes na sua pergunta, gostaria de sugerir ter um olhar para alguns básicos tutorial no site da Apple para desenvolvedores para ver o que está disponível em Cocoa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top