Articles of objective c blocos

Como um bloco captura as variables ​​fora de seu escopo de inclusão?

Eu sei que um Objective-C Block pode capturar e definir o valor das variables ​​fora do seu escopo. Como isso acontece?

Usando __block e __weak

Eu li sobre este tópico: O que significa a palavra-chave “__block”? que discute o que __block é usado, mas estou confuso sobre uma das respostas. Ele diz que o __block é usado para evitar ciclos de retenção, mas os comentários abaixo dele me deixam inseguro. Eu estou usando algo assim: self.someProperty = x; //where x […]

Bloco de UIButton equivalente a addTarget: action: forControlEvents: method?

Eu olhei em volta, mas não consegui encontrar isso na internet, nem em nenhum lugar nos documentos da Apple, então estou supondo que não existe. Mas existe uma API equivalente ao iOS4 para: [button addTarget:self action:@selector(tappy:) forControlEvents:UIControlEventTouchUpInside]; Eu suponho que isso poderia ser implementado usando uma categoria, mas prefiro não escrever isso sozinho devido à […]

Como simplificar a lógica de retorno de chamada com um bloco?

Digamos que eu precise me comunicar com uma class que forneça um protocolo e chame methods de delegação quando uma operação for concluída, assim: @protocol SomeObjectDelegate @required – (void)stuffDone:(id)anObject; – (void)stuffFailed; @end @interface SomeObject : NSObject { } @end Agora, eu decidi que enquanto eu poderia fazer outra class implementar o método stuffDone: delegate, eu […]

Por que não podemos usar um dispatch_sync na fila atual?

Eu corri para um cenário onde eu tinha um retorno de chamada de delegado que poderia ocorrer no segmento principal ou outro segmento, e eu não saberia qual até runtime (usando StoreKit.framework ). Eu também tinha o código da interface do usuário que eu precisava atualizar nesse retorno de chamada que precisava acontecer antes da […]

Alternativas para dispatch_get_current_queue () para blocos de conclusão no iOS 6?

Eu tenho um método que aceita um bloco e um bloco de conclusão. O primeiro bloco deve ser executado em segundo plano, enquanto o bloco de conclusão deve ser executado em qualquer fila em que o método foi chamado. Para o último, sempre usei dispatch_get_current_queue() , mas parece que ele está obsoleto no iOS 6 […]

Bloco de conclusão personalizado para o meu próprio método

Acabei de descobrir blocos de conclusão: completion:^(BOOL finished){ }]; O que preciso fazer para que meu próprio método receba um bloco de conclusão?

Atribuir uma variável dentro de um bloco a uma variável fora de um bloco

Estou recebendo um erro A variável não é atribuível (faltando o especificador de tipo __block) na linha aPerson = participant; . Como posso ter certeza de que o bloco pode acessar a variável aPerson e a variável aPerson pode ser retornada? Person *aPerson = nil; [participants enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { Person *participant […]

Quando usar enumerateObjectsUsingBlock vs.

Além das diferenças óbvias: Use enumerateObjectsUsingBlock quando precisar do índice e do object Não use enumerateObjectsUsingBlock quando precisar modificar variables ​​locais (eu estava errado sobre isso, veja a resposta do bbum) É enumerateObjectsUsingBlock geralmente considerado melhor ou pior quando for (id obj in myArray) também funcionaria? Quais são as vantagens / desvantagens (por exemplo, é […]