como usar NSRunLoop em Objective-C?
-
13-09-2019 - |
Pergunta
como usar como usar NSRunLoop em Objective-C e esperar por alguma variável ao valor de mudança?
Graças
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.