Perguntas com a marcação «objective-c-blocks»


8
O que significa a palavra-chave "__block"?
O que exatamente significa a __blockpalavra-chave em Objective-C? Eu sei que permite modificar variáveis ​​dentro de blocos, mas eu gostaria de saber ... O que exatamente isso diz ao compilador? Faz mais alguma coisa? Se isso é tudo o que faz, por que é necessário em primeiro lugar? Está nos …



7
Lista de sintaxe da declaração de bloco
A sintaxe do bloco no Objetivo C (e de fato C, presumo) é notoriamente incongruente. Passar blocos como argumentos parece diferente de declarar blocos como ivars, que parece diferente de um typedefbloco. Existe uma lista abrangente de sintaxe de declaração de bloco que eu poderia manter à mão para referência …


10
Aguardando até que dois blocos assíncronos sejam executados antes de iniciar outro bloco
Ao usar o GCD, queremos esperar até que dois blocos assíncronos sejam executados e concluídos antes de passar para as próximas etapas de execução. Qual o melhor jeito pra fazer isso? Tentamos o seguinte, mas parece não funcionar: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // block1 }); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ { // …

9
Reter o ciclo no `self 'com blocos
Receio que essa pergunta seja bastante básica, mas acho relevante para muitos programadores de Objective-C que estão entrando em blocos. O que ouvi é que, como os blocos capturam variáveis ​​locais referenciadas como constcópias, o uso selfdentro de um bloco pode resultar em um ciclo de retenção, caso esse bloco …

6
Quando usar enumerateObjectsUsingBlock vs. for
Além das diferenças óbvias: Use enumerateObjectsUsingBlockquando você precisar do índice e do objeto Não use enumerateObjectsUsingBlockquando precisar modificar variáveis ​​locais (eu estava errado sobre isso, veja a resposta do bbum) enumerateObjectsUsingBlockGeralmente é considerado melhor ou pior quando for (id obj in myArray)também funcionaria? Quais são as vantagens / desvantagens (por …

5
Declarar um parâmetro de método de bloco sem usar um typedef
É possível especificar um parâmetro de bloco de método no Objective-C sem usar um typedef? Deve ser, como ponteiros de função, mas não consigo acessar a sintaxe vencedora sem usar um typedef intermediário: typedef BOOL (^PredicateBlock_t)(int); - (void) myMethodTakingPredicate:(PredicateBlock_t)predicate somente as compilações acima, todas estas falham: - (void) myMethodTakingPredicate:( BOOL(^block)(int) …


7
Armazene um fechamento como uma variável no Swift
No Objective-C, você pode definir a entrada e a saída de um bloco, armazenar um desses blocos que são passados ​​para um método e usá-lo posteriormente: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger measuredPower, NSError *error); // in .m @property (strong) APLCalibrationProgressHandler progressHandler; @property (strong) APLCalibrationCompletionHandler completionHandler; …

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.