Есть 3 различных инициализатора, поэтому вы можете использовать любой из них - ни один из них не является неправильным, они позволяют вам инициировать класс с переменными данными - в основном для удобства, так как в конце они все делают одно и то же.
Вы можете инициировать класс с указанной строкой и датой (первый и самый длинный инициализатор),
, или вы можете указать только строку и установить дату в текущее время,
или вы можете иметь пустую строку и текущее время.
обратите внимание, что вызов:
[self init];
равен вызову
[self initWithStr: nil];
, и это в свою очередьравно
[self initWithStrAndDate: nil date:[NSDate date]];
Итак, в конце концов, вы все равно вызываете один и тот же инициализатор.