ReactiveCocoa realização do princípio da rac_signalForSelector

ReactiveCocoa pode invocar um método para adicionar uma ligação, ou é um observador.

rac_signalForSelector: acordo vinculativo fromProtocol :( método)

rac_signalForSelector :( método classe de ligao)

princípio:

  1. Desde atributos associados na classe atual, value: RACSubject
  2. A maneira de conseguir selector de entrada está definido para _objc_msgForward (O objetivo é deixar de ir este método método chamado fluxo de encaminhamento)
  3. "Categoria atual" reescrita ou adicionar respondsToSelector: método, verifique a propriedade existe relacionada, existe: retorna SIM, o método de frente próximo passo
  4. "Categoria atual" reescrita ou adicionar methodSignatureForSelector: método, assinatura do método de construção
  5. "Classe atual" reescrever ou adicionar forwardInvocation: método 1): método de inspeção pode ser chamado, a execução do método Invoke; 2): obter o atributo classe associada, a execução sendNext RACSubject, o método de embalagem no parâmetro de invocação em RACTuple como parâmetros sendNext.

A razão para todo o método chama um método unificado para ir processo adiante, o objetivo é que você pode facilmente acessar os parâmetros do objeto método de invocação.

 notas:

Disse acima "da classe atual", e não o código real para instanciar a classe, mas nós dinamicamente criar uma classe A, classe e herança, então isa ponteiro para o conjunto de classe para classe A (aqui é o uso de KVO princípio de implementação).

Como essa classe é possível adicionar um KVO realizado, ponteiro isa para a classe por isso não é self.class aponta para a classe, e então precisamos reescrever ou adicionar mais métodos nesta classe isa ponteiro aponta para a classe.

Na verdade, para alcançar o padrão de design KVO é o uso de clusters de craveira forma, você pode olhar como os cachos .

Acho que você gosta

Origin www.cnblogs.com/zbblog/p/12540628.html
Recomendado
Clasificación