Пометить метод как устаревший

#ios #xcode #api

#iOS #xcode #API

Вопрос:

У меня есть изменения в моем API, и я хочу пометить один метод как устаревший. Я поместил в его подпись следующее: атрибут((устаревший («Не используйте этот метод»))); Однако я не знаю, как мне нужно вести себя в самом теле метода.

Не могу найти что-либо в Apple, кодирование начинает меня подводить. Метод возвращает BOOL. должен ли я просто вернуть false?

Комментарии:

1. Почему вы помечаете его как устаревший?

2. Как я отмечаю метод как устаревший: -(void)метод __attribute__((устаревший)); (.h) -(void)метод __attribute__((устаревший)){}(.m) Это всегда работает для меня.

3. Устаревший означает, что метод все еще должен работать, но вызывать его не рекомендуется, поскольку существует новый подход, который следует принять.

4. Нет, если вы не хотите, чтобы кто-либо его использовал, удалите его. Устаревший означает, что он будет удален в будущем, и вам больше не рекомендуется его использовать. НО он все равно должен работать, если вызван.

5. Джефф прав. Даже если это устаревший метод, он все равно должен работать. Если вы не хотите, чтобы кто-либо его использовал, удалите его из API

Ответ №1:

Устаревший означает, что метод все еще работает, но может быть удален в будущих версиях, и новый метод является наиболее предпочтительным.

Вы можете предоставить некоторую дополнительную информацию пользователю, который использует устаревший метод:

 /**
 * @deprecated This method is deprecated starting in version x.x
 * @note Please use @code newMethod:withNewParameter: @endcode instead.
 */
-(void)depFunction:(id)x __attribute__((deprecated));
  

Когда он использует, как:

 [yourClassObj depFunction:@"argument"];
  

Панель быстрой справки покажет информацию, подобную:

Устаревший

Возможно, вы также захотите изменить attribute((deprecated("Don't use this method"))); на DEPRECATED_MSG_ATTRIBUTE("Don't use this method, use the other one instead.");