«Старый» способ, которым я делал это в iOS 4, заключался в объявлении объекта в заголовочном файле и передаче объекта для обратной записи для обработки параметра ошибки.
NSError *error;
По независящим от меня причинам я не смог продолжить этот шаблон в iOS5 и получил ошибку:
"Передача адреса нелокального объекта в параметр _autoreleasing для обратной записи"
//Instantiate an instance of AVAudioSession object
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//Setup playback and Record
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error ];
Временное решение для меня заключается в том, чтобы сделать это:
NSError *theError = nil;
//Instanciste an instance of AVAudioSession object
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//Setup playback and Record
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&theError];
//Activate session
[audioSession setActive:YES error:&theError];
Это раздражает, так как мне приходится создавать этот локальный объект каждый раз, когда мне нужно использовать его в Xcode.
Мой вопрос таков: есть ли лучший способ сделать это в новой парадигме ARC?
Я нашел подобный вопрос здесь в переполнении стека, который имеет дело с этой проблемой вроде ... здесь