Pergunta

Se eu usar

[self performSelectorOnMainThread:@selector(uploadDidEnd:) withObject:foo
        waitUntilDone:YES]

No método -(void)uploadDidEnd:(id)do remetente

Que objeto é o remetente?na chamada foo é uma classe personalizada?Como posso converter esse remetente meu objeto?

Eu estou tentando elenco, mas eu estou tendo

'-[_NSThreadPerformInfo CountY]: unrecognized selector sent to instance 0x52bbd0'

Em notificações, eu uso um elenco de remetente para NSNotification e notificação tem a propriedade de objeto, mas para NSThread que eu não encontrei.

Obrigado.

Foi útil?

Solução

Você pode pensar:

[self performSelectorOnMainThread:@selector(uploadDidEnd:)
      withObject:foo
      waitUntilDone:YES]

como uma espécie do mesmo como:

[self uploadDidEnd:foo];

Tem certeza que é o que você está tentando fazer?

Se assim:dentro da sua uploadDidEnd: a implementação, você pode lançar foo para qualquer tipo de objeto que realmente é assim:

- (void)uploadDidEnd:(id)sender
{
  FooClass *foo = (FooClass *)sender;
  [foo doSomething]; // or whatever
}

Outras dicas

  1. O argumento declarado sender é o único parâmetro passado para o método.performSelectorOnMainThread:withObject:waitUntilDone:passa seu argumento depois withObject para o seletor para ser executada, então, sim, aqui foo será passado para uploadDidEnd:

  2. Elenco não é uma solução.Objective-C é uma linguagem dinâmica, portanto, mesmo se a carcaça elimina os avisos do compilador, a implementação real do objeto não muda, por isso, naturalmente, não repond para mensagens.

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