«Использование необъявленного идентификатора» в AppDelegate (iOS)

Столкнулся с небольшой проблемой.

Это мой первый раз, когда я серьезно работаю с файлом AppDelegate.h/.m.

Я объявил свойство @property float centerFreq в AppDelegate.h. Затем я синтезирую его в AppDelegate.m вот так: @synthesize centerFreq = _centerFreq. Однако, когда я пытаюсь использовать centerFreq позже в AppDelegate.m, я получаю сообщение об ошибке «Использование необъявленного идентификатора 'centerFreq'». Я не понимаю, почему я не могу использовать эту переменную где-либо в моем файле .m.


person Roshan Krishnan    schedule 06.09.2014    source источник
comment
Это _centerFreq, а не centerFreq   -  person Wyetro    schedule 06.09.2014


Ответы (1)


foo = self.centerFreq вызовет геттер, который создается автоматически. Эквивалентно foo = [self centerFreq]. _centerFreq будет напрямую обращаться к переменной экземпляра (iVar). В общем, если вы создали @property, вы хотите использовать методы доступа centerFreq и setCenterFreq, которые вызываются, если вы используете self.centerFreq в качестве lvar или rvar в операции присваивания. (self.centerFreq = foo звонит [self setCenterFreq:foo]).

@synthesize centerFreq = _centerFreq не требуется, если только вы не реализовали методы получения и установки для @property, поскольку _centerFreq — это имя по умолчанию для резервного iVar. Если вы хотите выбрать другое имя для iVar, то @synthesize будет полезен.

person stevesliva    schedule 06.09.2014
comment
Когда я пытаюсь это сделать, он говорит об использовании необъявленного идентификатора «я». Я не думал, что мне нужно где-то заявлять о себе... Я думал, что это просто так? - person Roshan Krishnan; 06.09.2014
comment
Объявление вашего метода может быть форматом функции C, а не форматом метода Objective-C (вам нужен - перед типом возвращаемого значения для метода экземпляра), или у вас может быть какая-то другая синтаксическая ошибка. Без кода точно сказать нельзя. - person stevesliva; 06.09.2014
comment
Ах, тогда в этом и проблема. Метод написан на C. Однако это создает интересную проблему, потому что я использую структуру Core Audio, которая должна быть на C — возможно, мне лучше задать ее отдельно. Спасибо за помощь. - person Roshan Krishnan; 07.09.2014