Pergunta

estou querendo usar FSPathCopyObjectAsync e estou falhando.Para entender o problema, procurei exemplos dele em outros lugares e, embora estivesse experimentando o código-fonte um pouco desatualizado do O tutorial de Matt Long sobre Cocoa is my Girlfriend, encontrei então um exemplo um pouco mais elaborado em um projeto no github, como uma categoria em NSFileManager.Como meu projeto está rodando em ARC, tentei portá-lo e consegui apenas metade dele.

Em seu Forma Atual, a cópia real funciona, mas o método de retorno de chamada MZCopyFSPathFileOperationStatusProc nunca é chamado.Esse método de retorno de chamada é o único motivo para usar a cópia assíncrona; caso contrário, é melhor executar uma cópia síncrona em segundo plano.Presumo que o motivo do retorno de chamada não ser chamado é que algum objeto foi lançado incorretamente pelo ARC, mas pode haver algo mais acontecendo.Estou segurando o objeto de retorno do copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error: método, então não pode ser isso, certo?

Quem pode detectar o erro e explique por que esta categoria não está gerando retornos de chamada?É ARCO?É outra coisa?

Muito grato.EP.

P.S.Por motivos de redundância, aqui está a essência: https://gist.github.com/6f3715753896ccf6fd35

Foi útil?

Solução

Seu delegado precisa ser fortemente referenciado por alguma coisa.O NSFileManager manterá apenas uma referência fraca a ele (como deveria), portanto, se você não tiver uma referência forte a ele, seu delegado será liberado e os retornos de chamada não serão vistos.

Você já pensou em usar blocos para retornos de chamada?Isso provavelmente seria preferível.

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