По сути, это ошибка, которая возникает из-за C.
Если в одном файле .c у меня есть следующее:
void myFunction(int myArg)
{
printf("%i", myArg);
}
И в другом файле у меня есть эта функция:
void myFunction(int myArg)
{
printf("MyArg is: %i", myArg);
}
Когда компилятор связывает ваш проект и вы вызываете
myFunction(10);
Компилятор не знает, какую версию вашего метода вызывать, поэтому решение является одним из следующих:
1) Определите метод один раз и включайте только прототип функции.Пример:
// instead of implementing myFunction here, we do this:
void myFunction(int myArg);
// and implement myFunction in another file.
-(void) viewDidLoad {
myFunction(10);
}
2) Определите метод дважды, но добавьте к нему статический классификатор, который сообщает компоновщику, что это единственный файл, который может использовать эту функцию.
// FileOne.c
static void myFunction(int myArg)
{
printf("myArg is: %i", myArg);
}
// FileTwo.c
static void myFunction(int myArg)
{
printf("%i", myArg);
}
Честно говоря, для простоты я бы порекомендовал просто использовать статический классификатор, но это только мои предпочтения, когда дело доходит до этих вопросов.