Причина в том, чтобы облегчить понимание.
В вашем примере метод будет выглядеть примерно так в C ++:
int shipsAtPointWithDamage (CGPoint bomb, BOOL damage) //I don't really know C++
ОК, поэтому первый параметр - это точка корабля, а урон - второй. Это достаточно легко понять, но это то, что нужно, вы должны выяснить это, вы должны взглянуть на метод, чтобы попытаться выяснить, что это за вещь.
В Objective-C у вас есть
-(NSArray *)shipsAtPoint:(CGPoint)bombLocation withDamage:(BOOL)damaged;
Каждый параметр четко определен, первый - это точка корабля, второй - урон. Он читается как предложение , тогда как в C ++ (и почти во всех других языках) - нет.
Если вы хотите, чтобы метод имел несколько параметров в Obj-C, вы должны написать его следующим образом:
-(returnType)paraOne:(type*)name paraTwo:(type*)name
Это то, к чему нужно привыкнуть, все языки разные. Как только вы привыкнете к тому, как Objective-C работает, вы будете думать, что это просто фантастика.
РЕДАКТИРОВАТЬ: и как указал filipe, поскольку метод в качестве нескольких параметров не означает, что он имеет несколько имен, в приведенном выше примере имя метода будет paraOne:paraTwo
, НЕ paraOne: