Это не включает перегрузку функции.Obj-C не имеет перегрузки функций.Он правильно называет метод.Ваш первый метод называется -insertObject::
, а второй - -insertObject:atIndex:
.В то время как оба технически работают, первый считается крайне плохой формой, особенно если вы добавляете еще больше параметров, например, -doSomething::::
.
Одним из часто упоминаемых преимуществ Obj-C является метод именования, позволяющийпонять, что делает код, прочитав его, не обращаясь к документации.Например, если у меня есть
[self initWithName:@"foo" andAge:13]
, то сразу видно, что это за параметры, но если у меня было
[self init:@"foo" :13]
, тогда совершенно не очевидно, что эти параметры должны представлять.
Это также помогает, когда у вас есть методы с одинаковыми именами.Например, NSKeyValueCoding определяет как -setValue:forKey:
, так и -setValue:forUndefinedKey:
.Совершенно очевидно, что если бы оно было названо -setValue::
, то здесь произошло бы столкновение.