Esclarecimento sobre o bloco de documentos da Apple?

Eu estou trabalhando com alguns problemas de retenção de ciclo com blocos / ARC, e estou tentando entender minhas nuances. Qualquer orientação é apreciada.

A documentação da Apple sobre "Blocos e Variáveis" (http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxVariables.html) diz o seguinte:

Se você usar um bloco dentro da implementação de um método, as regras para gerenciamento de memória de variáveis ​​de instância de objeto são mais sutis:

Se você acessar uma variável de instância por referência, o self será retido; Se você acessar uma variável de instância por valor, a variável será retida. Os exemplos a seguir ilustram as duas situações diferentes:

dispatch_async(queue, ^{
    // instanceVariable is used by reference, self is retained
    doSomethingWithObject(instanceVariable);
});


id localVariable = instanceVariable;
dispatch_async(queue, ^{
    // localVariable is used by value, localVariable is retained (not self)
    doSomethingWithObject(localVariable);
});

Acho essa explicação confusa.

Este uso apropriado da terminologia "por valor" / "por referência"? Assumindo que essas variáveis ​​são do mesmo tipo (id), parece que a característica distintiva entre elas é o seu escopo.

Eu não vejo como o self está sendo referenciado no exemplo "por referência"? Se um método de acesso estivesse sendo usado (por exemplo, abaixo), eu poderia ver o self sendo retido.

doSomethingWithObject (self.instanceVariable);

Você tem alguma orientação sobre quando alguém pode querer fazer as coisas de um jeito ou de outro?

Se a sabedoria convencional é utilizar as variáveis ​​"por valor", parece que isso resultará em muito código adicional para declarações de variáveis ​​adicionais?Em uma circunstância em que blocos aninhados estão entrando em jogo, parece que pode ser mais sustentável evitar a declaração dos blocos dentro um do outro, já que se pode acabar com um pot-pourri de objetos não intencionalmente retidos?

questionAnswers(2)

yourAnswerToTheQuestion