Предположим, что у вас есть свойство с семантикой копирования. Что делать в установщике, если метод копирования не работает? (Я предполагаю, что это возможно, так как копия обычно начинается с combo alloc/init, которая может сбой и возврат nil.) Apple рекомендует возвращать коды ошибок, а не использовать исключения, но у установщика обычно есть тип возврата void. Каков рекомендуемый подход? Как вы сообщаете, что произошла ошибка?
Как происходит сбой фильтра свойств устройства Objective-C?
Ответ 1
Невозможно сигнализировать об ошибке, кроме того, что свойство, которое вы назвали, будет nil
. Вы можете проверить nil
после выполнения настройки, так же, как вы бы хотели подтвердить успех после того, как alloc/init'ing нового экземпляра.
Ответ 2
Рекомендация Apple заключается в том, что исключения должны быть зарезервированы для исключительных ситуаций. В любом случае это рекомендуемая практика программирования, но в случае Objective-C усиливается из-за более высокой стоимости обработки исключений.
Таким образом, вы можете выбросить исключение, если хотите, и оно подходит, например. нехватка памяти (копия не удалась) - (надеюсь,!) исключительная.
Тем не менее, некоторые практики программирования также рекомендуют, чтобы свойства не бросали исключения; обычно на том основании, что что-то, что выглядит как присваивание obj.property = value;
, будет путать, если были выбраны исключения (в отличие от [obj setProperty:value]
).
Итак, чтобы мы установили свойство "zero" для типа (nil
, 0
, 0.0
, NO
и т.д.).
Чтобы вернуть более подробную информацию о записи об ошибке ошибки, которая может быть запрошена после обнаружения "нуля". Это, по сути, подход, используемый базовыми ( "Unix" ) системными вызовами, и многие функции библиотеки, были установлены errno
перед возвратом "нуля".