Не совсем.
с:
self = [super init];
вы вызываете свой метод инициализации суперкласса, который только в редких случаях возвращает ноль.(например, если в системе недостаточно памяти, что вызывает другие проблемы).
if(self)
это не будет выполнено, если не возвращен ни один экземпляр (это ноль), поэтому нет необходимости в другом.
старый способ был
if((self = [super init))
{
// do initialization
}
return self
РЕДАКТИРОВАТЬ: читал руководство по какао, и нашел его в разделе Обработка ошибок:
Если ошибка возникла в реализации методаявляется ошибкой системного уровня или Objective-C во время выполнения, создайте и вызовите исключение, если необходимо, и обработайте его локально, если это возможно.В Какао исключения, как правило, зарезервированы для программирования или непредвиденных ошибок времени выполнения, таких как доступ за пределы коллекции, попытки изменить неизменяемые объекты, отправить недопустимое сообщение и потерять соединение с оконным сервером.Вы обычно заботитесь об этих ошибках за исключением случаев, когда создается приложение, а не во время выполнения.Какао предопределяет несколько исключений, которые вы можете перехватить с помощью обработчика исключений.Информацию о предопределенных исключениях, а также о процедуре и API для вызова и обработки исключений см. В разделе Темы программирования исключений.
Для других типов ошибок, включая ожидаемые ошибки времени выполнения, return nil, NO, NULL или некоторые другие- подходящая форма нуля для звонящего.Примеры этих ошибок включают невозможность чтения или записи файла, сбой при инициализации объекта , невозможность установить сетевое соединение или сбой при поиске объекта в коллекции.Используйте объект NSError, если считаете необходимым вернуть отправителю дополнительную информацию об ошибке.Объект NSError инкапсулирует информацию об ошибке, включая код ошибки (который может быть специфичен для доменов Mach, POSIX или OSStatus) и словарь информации, относящейся к программе.Отрицательное значение, которое возвращается напрямую (nil, NO и т. Д.), Должно быть основным индикатором ошибки;если вы передаете более конкретную информацию об ошибке, то непрямой возврат объекта NSError в параметре метода.