Бросать и перехватывать исключения в Objective-C стоит дорого (за исключением 32-битной Mac OS X, где часть @try
кода перехвата исключений является дорогой частью вместо части @catch
.)
Вам лучше возвращать коды ошибок в каком-то механизме (например, NSError
, ОО способ сделать это в Objective-C.) Пусть они всплывают в коде, который обращается к вашей структуре, а затем позволяют что код обрабатывает его соответствующим образом.
Очистка памяти в случае ошибки в любой из систем не должна вызывать особых беспокойств, так как вы должны иметь возможность помещать большинство объектов и выделений в пул автоматического выпуска.Тем не менее, имейте в виду, что пул будет поглощать любые NSError
или NSException
объекты, созданные в его области действия, поэтому вам необходимо убедиться, что эти объекты выживут после окончания вашего кода с дополнительными сохранениями и выпусками.(Немного не по теме, но я видел, что многие люди запутывают эту часть при обработке ошибок.)