Estou interessado em entender as circunstâncias que levam um desenvolvedor a substituir + inicializar ou + carregar. A documentação deixa claro que esses métodos são chamados para você pelo tempo de execução Objective-C, mas isso é realmente tudo o que fica claro na documentação desses métodos. :-)
Minha curiosidade vem de olhar para o código de exemplo da Apple - MVCNetworking. Sua classe modelo tem um +(void) applicationStartup
método. Ele faz alguma manutenção no sistema de arquivos, lê NSDefaults, etc etc ... e, depois de tentar grok os métodos de classe de NSObject, parece que este trabalho de zeladoria pode ser colocado + carregar.
Eu modifiquei o projeto MVCNetworking, removendo a chamada no App Delegate para + applicationStartup e colocando os bits de manutenção em + carga ... meu computador não pegou fogo, mas isso não significa que está correto! Espero obter uma compreensão de todas as sutilezas, pegadinhas e outras coisas em torno de um método de configuração personalizado que você precisa chamar versus + carregar ou + inicializar.
Para + carregar a documentação diz:
A mensagem de carregamento é enviada para classes e categorias que são carregadas dinamicamente e vinculadas estaticamente, mas apenas se a classe ou categoria carregada recentemente implementar um método que possa responder.
Esta frase é confusa e difícil de analisar se você não souber o significado preciso de todas as palavras. Socorro!
O que significa "carregado dinamicamente e vinculado estaticamente?" Algo pode ser carregado dinamicamente E vinculado estaticamente ou são mutuamente exclusivos?
"... a classe ou categoria carregada recentemente implementa um método que pode responder" Que método? Responder como?
Quanto a + inicializar, a documentação diz:
inicializá-lo é invocado apenas uma vez por classe. Se você deseja realizar inicialização independente para a classe e para categorias da classe, você deve implementar métodos de carregamento.
Eu entendo que isso significa, "se você está tentando configurar a classe ... não use inicializar." OK tudo bem. Quando ou por que eu substituiria a inicialização?
+load
é enviado separadamente para as categorias; ou seja, cada categoria em uma classe pode conter seu próprio+load
método.