Когда метод начинается с +
, это означает, что метод является методом класса . Это означает, что вместо того, чтобы называть это как:
// Calling an instance method.
[self doSomething];
Вы будете называть это как:
// Calling a class method.
[ClassName doSomething];
Вам не нужен экземпляр объекта для вызова метода класса. Вы можете подумать, что это означает, что код будет работать быстрее, потому что вам не нужно держаться за объект, но, насколько я знаю, среда выполнения на самом деле создаст объект на лету для выполнения вашего метода, что приведет к драматической безответственности если вы часто (тысячи раз) вызываете метод класса. С другой стороны, методы, начинающиеся с -
, методы экземпляра . Чтобы вызвать их, сначала необходимо создать экземпляр объекта. Например:
// Create the object.
SomeObject *tSomeObject = [[SomeObject alloc] init];
// Calling the method.
[tSomeObject doSomething];
Вызов метода с несколькими аргументами работает так же, как и вызов метода с одним аргументом. Вот как это работает:
[ClassName rangeFinder: date1 isBetweenDate: date2 иDate: date3];
Я бы рассмотрел изменение сигнатуры метода с rangeFinder:isBetweenDate:andDate:
на что-то более похожее на date:isBetweenDate:andDate:
. Вы также можете рассмотреть вариант, когда date3
меньше date2
. В настоящее время ваша реализация вернет NO
, но, похоже, вы захотите, чтобы она вернула YES
.