Компилятор ищет селекторы, которые являются определениями методов с переменными и возвращаемым значением.
Таким образом, такой метод, как:
-(void) setObject:(id) anObject forKey:(NSString *) keyname;
... будет иметь селектор:
setObject:forKey:
Поэтому ваш метод:
-(void) changeObjectLocations: (integer_t) xSpot: (integer_t) ySpot: (id) sender
... будет иметь селектор:
changeObjectLocations:xSpot:ySpot:
Обратите внимание, что имена параметров являются частью селектора, поэтому:
changeObjectLocations:xSpot:ySpot:
и
changeObjectLocations:::
.. - это два совершенно отдельных селектора, которые представляют два совершенно разных метода.
Хотя в языке разрешено использовать параметры без имен, например ":::", это очень и очень плохая практика, в основном потому, что легко получить конфликт имен.Явное явление не только облегчает чтение и поддержку кода, но и облегчает работу компилятора и среды выполнения.