Acho que, na maioria das classes, se o valor de retorno de [super init] for nulo e você o verificar, conforme recomendado pelas práticas padrão, e retornar prematuramente se for nulo, basicamente seu aplicativo ainda não funcionará corretamente. Se você pensar sobre isso, apesar de que, se (auto! = Nil) verificação está lá, para o funcionamento adequado de sua classe, 99,99% do tempo que você realmente fazer necessidade de auto para ser não-nulo. Agora, suponha que, por qualquer motivo, [super init] tenha retornado nulo, basicamente seu cheque contra nulo está basicamente passando a quantia para o chamador de sua classe, onde provavelmente falharia de qualquer maneira, já que naturalmente assumirá que a chamada foi bem sucedido.
Basicamente, o que eu entendo é que 99,99% do tempo, o if (self! = Nil) não compra nada para você em termos de maior robustez, já que você está apenas passando o dinheiro para o invocador. Para realmente ser capaz de lidar com isso de maneira robusta, você realmente precisa verificar a hierarquia de chamadas inteira. E mesmo assim, a única coisa que você compraria é que seu aplicativo falharia um pouco mais limpa / robusta. Mas ainda falharia.
Se uma classe de biblioteca decidiu arbitrariamente retornar nulo como resultado de um [superinicial], você está praticamente fodido de qualquer maneira, e isso é mais uma indicação de que o escritor da classe de biblioteca cometeu um erro de implementação.
Acho que isso é mais uma sugestão de codificação herdada, quando os aplicativos são executados em muito mais memória limitada.
Mas para o código de nível C, eu ainda normalmente verificaria o valor de retorno de malloc () em relação a um ponteiro NULL. Considerando que, para o Objective-C, até encontrar evidências em contrário, acho que geralmente ignorarei as verificações if (self! = Nil). Por que a discrepância?
Porque, nos níveis C e malloc, em alguns casos você pode recuperar parcialmente. Enquanto eu penso no Objective-C, em 99,99% dos casos, se o [super init] retornar nulo, você está basicamente fodido, mesmo que tente lidar com isso. Você também pode deixar o aplicativo falhar e lidar com as consequências.