setDelegate устарел в iOS 6

Я пытаюсь запустить этот пример кода с iOS 7.0, но я получаю некоторые предупреждения из-за устаревшего кода. Пример кода предоставлен здесь не обновлялся 3 года. Вот решение, которое я нашел, которое имеет для меня смысл, но у меня возникли проблемы с реализацией в примере кода, поэтому он будет работать внутри симулятора iOS.

AVAudioSession* session = [AVAudioSession sharedInstance];
session.delegate = self;// <-------- DEPRECATED IN IOS 6.0

Чтобы отключить предупреждение, измените эти 2 строки на это:

[[AVAudioSession sharedInstance] setActive:YES error:nil];

Кто-то еще предложил

[AVAudioSession sharedInstance];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruption:) name:AVAudioSessionInterruptionNotification object:nil];

Приведенное выше решение является быстрым решением, но я хочу, чтобы программа работала правильно.

Но все это заставляет меня задаться вопросом, как я могу назвать вызов функции setPreferredHardwareSampleRate чем-то, что не устарело.

[mySession setPreferredHardwareSampleRate: graphSampleRate
                                    error: &audioSessionError];

введите здесь описание изображения


person foo    schedule 26.09.2013    source источник
comment
Вместо этого используйте уведомления, описанные в разделе «Уведомления» этого класса.   -  person Hot Licks    schedule 26.09.2013
comment
я понятия не имею, как это сделать   -  person foo    schedule 26.09.2013
comment
Я предлагаю начать здесь: developer.apple .com/library/ios/documentation/Cocoa/Conceptual/   -  person Sixten Otto    schedule 27.09.2013


Ответы (1)


Как правило, когда метод устарел, заголовки/документация обновляются предложениями о том, что делать вместо этого. Похоже на документация в этом случае предлагает -setPreferredSampleRate:error: в качестве альтернативы.

person Sixten Otto    schedule 26.09.2013
comment
как на самом деле выглядит переведенный оператор вызова метода в этом контексте? - person foo; 26.09.2013
comment
Учитывая, что предлагаемый метод имеет те же параметры и тип возвращаемого значения, что и устаревший метод, который он заменяет, он будет выглядеть почти точно так же. - person Sixten Otto; 27.09.2013
comment
очень новичок в xcode, можете ли вы сказать мне, что это должно быть переведено в [mySession setPreferredHardwareSampleRate: ошибка graphSampleRate: &audioSessionError]; - person foo; 28.09.2013