Первый:
Имя метода не существует. Вы имели в виду не писать objectAtIndex вместо objectAt.
Когда он говорит, что объект теперь может отвечать на '-something', это потому, что методы не объявлены в заголовочном файле. Это приводит к тому, что компилятор не уверен, существует ли метод в файле реализации или нет. Когда вы используете встроенные классы (NSArray, NSView и т. Д.), Такие предупреждения обычно означают, что вы неправильно написали имя метода. Единственное, что нужно сделать, это поискать в документации и дважды проверить. Подобные ошибки типов приводят к сбою приложения при попытке отправить сообщение объекту, который не отвечает селектору.
Второй:
Это всего лишь предупреждение о том, что переменная не используется. Удалить строку. Как вы можете видеть, soundToPlay не используется в методе playSound, он только объявляется.
Если вы используете его FX. при вызове функции NSLog или в методе это предупреждение должно исчезнуть.
Третий:
Возможно, вы неправильно используете функцию. Не могу сказать по коду, который ты написал ..
Другое:
Даниэль прав. Ваш метод viewDidLoad создает локальный массив и никогда не сохраняет его в переменной soundArray. Для этого добавьте
soundArray = sounds
в нижней части метода. Или просто пишите прямо в soundsArray вместо звуков.