NSBlockOperation ou NSOperation com ALAsset Block para exibir imagens da biblioteca de fotos usando o URL do ALAsset
Eu estou fazendo esta pergunta sobre minhas perguntasMostrar imagens fotolibratórias de uma forma eficaz iPhone eUITableView altamente eficiente "cellForRowIndexPath" método para ligar as imagens PhotoLibrary.
Então eu gostaria de solicitar que as respostas não sejam duplicadas para esta sem ler os detalhes abaixo :)
Vamos ao assunto
Eu pesquisei detalhadamente sobre a questão acima mencionada, e encontrei o documento sobrefilas de operação deAqui.
Então eu criei um aplicativo de amostra para exibir sete imagens de biblioteca de fotos usando filas de operação através de blocos ALAsset.
Aqui estão os detalhes do aplicativo de amostra.
Passo 1:
No NSOperationalQueueViewControllerviewDidLoad método, eu recuperei toda a galeria de fotos ALAssetURLs em um array chamadourlArray
.
Passo 2:
Depois que todos os URLs são adicionados aourlArray
, ase (grupo! = nulo) condição será falsa emassetGroupEnumerator
, então eu criei umNSOperationQueue
e, em seguida, criou sete UIImageView através de umfor
laço e criou o meuNSOperation
subclasse objeto com o correspondentevisualização de imagem eURL para cada um eadicionado -los para oNSOperationQueue
.
Veja meuNSOperation
subclasseAqui.
Veja minha classe de implementação (VierwController) Aqui.
Vamos ao assunto.
Não exibe todas as sete imagens de forma consistente. Algumas das imagens estão faltando. A ordem em falta está mudando várias vezes (uma vez, ela não exibe a sexta e a sétima, e outra vez, não exibe apenas a segunda e a terceira). O log do console é exibidoNão foi possível encontrar o número da foto. No entanto, as URLs são registradas corretamente.
Você pode ver os detalhes do logAqui.
Há algum erro nas minhas aulas?
Além disso, quando eu passar pelo acima mencionadofila operacional documentação, li sobreNSBlockOperation
. Eu preciso implementarNSBlockOperation
ao invés deNSOperation
enquanto lida com blocos ALAsset?
oNSBlockOperation
descrição diz
Uma classe que você usa como está para executar um ou mais objetos de bloco simultaneamente. Como ele pode executar mais de um bloco, um objeto de operação de bloco opera usando uma semântica de grupo; somente quando todos os blocos associados tiverem terminado a execução é a própria operação considerada concluída.
Como posso implementar oNSBlockOperation
com o bloco ALAsset em relação ao meu aplicativo de amostra?
Eu passei pela pergunta do Stack OverflowAprendizado NSBlockOperation. No entanto, não tive nenhuma ideia de implementar oNSBlockOperation
com o bloco ALAsset !!