Estou tentando aprender a contagem automática de referências no iOS 5. Agora, a primeira parte desta pergunta deve ser fácil:
É correto que eu NÃO precise escrever instruções explícitas de propriedade de liberação em meu acordo quando usar o ARC? Em outras palavras, é verdade que o seguinte NÃO precisa de um desdobramento explícito?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Minha próxima e mais importante pergunta vem de uma linha no documento Transitions to ARC Release Notes :
Você não precisa (na verdade não pode) liberar variáveis de instância, mas pode precisar chamar [self setDelegate: nil] nas classes do sistema e outro código que não é compilado usando o ARC.
Isso levanta a questão: como sei quais classes de sistema não são compiladas com o ARC? Quando devo criar meu próprio desalocação e definir explicitamente propriedades de retenção forte para zero? Devo assumir que todas as classes de estrutura NS e UI usadas nas propriedades requerem acordos desastrosos explícitos?
Há uma abundância de informações sobre SO e em outras partes sobre as práticas de liberação de ivar de apoio de uma propriedade ao usar o rastreamento de referência manual, mas relativamente pouco sobre isso ao usar o ARC.
MyController : UIViewController
classe que cria e possui um UIView e também define o delegado da exibição para si mesmo. É o único proprietário retentor dessa opinião. Quando o controlador é desalocado, a visualização também deve ser desalocada. Importa então se o ponteiro do delegado está pendurado?