自定义宏标记某个类为已废弃

在重构的时候,有时候会因为有了一个更好的类而想要标记某个类为已废弃.这时候就需要用到__attribute__以及deprecated(something)关键字了,这样做了之后,如果有人继续使用已废弃的类编译器就会发出警告.
那么如何让发出的警告像苹果原生的那样提示呢?

XQ_CLASS_DEPRECATED_APP(2_0_0, 3_0_0, "请使用XQMyViewController")
@interface ViewController : UIViewController

- (void)myPrint __attribute__((deprecated("请使用 -xxPrint")));

@end

效果如下:

969588ED-C749-4020-94AD-B37D0DA15DC0.png
3CCA139B-8E7D-4FD7-8754-70D1A16CEF89.png

在使用已废弃的类时,提示器会显示该类已废弃:


BE2AB73F-A44C-4963-893D-E1B6C54226E0.png

XQ_CLASS_DEPRECATED_APP(2_0_0, 3_0_0, "请使用XQMyViewController")声明如下:

#ifndef XQStateDeprecatedMacro_h
#define XQStateDeprecatedMacro_h

#define XQ_CLASS_DEPRECATED_APP(_appIntro, _appDep, ...) XQ_CLASS_DEPRECATED(_appIntro, _appDep, __VA_ARGS__)

#define XQ_CLASS_DEPRECATED(_appIntro, _appDep, ...) __attribute__((visibility("default"))) XQ_DEPRECATED(_appIntro, _appDep, __VA_ARGS__)

#define XQ_DEPRECATED(_appIntro, _appDep, ...) __XQ_AVAILABLE_BUT_DEPRECATED(__APP_##_appIntro, __APP_##_appDep, __VA_ARGS__)

#define __XQ_AVAILABLE_BUT_DEPRECATED(_appIntro, _appDep, ...) __XQAVAILABILITY_INTERNAL##_appIntro##_DEP##_appDep(__VA_ARGS__)

#define __XQAVAILABILITY_INTERNAL__APP_2_0_0_DEP__APP_3_0_0(...) __XQNB_AVAILABILITY_STARTING("3.0.0,"#__VA_ARGS__"")

#define __XQNB_AVAILABILITY_STARTING(...) __attribute__((deprecated("first deprecated in 动漫日语 app version "__VA_ARGS__""))) __attribute__((weak_import))


#endif

如果觉得上面的太麻烦,也可以使用下面的简化版:

#define XQ_CLASS_DEPRECATED_APP(versionIntro, versionDep, descriptionDep, ...) __attribute__((deprecated("first deprecated in 动漫日语 "#versionDep","#descriptionDep","#__VA_ARGS__""))) __attribute__((weak_import))

XQ_CLASS_DEPRECATED_APP(2.0.0, 3.0.0, "请使用UIMyViewController")

使用后可以达到相同的效果:

83736C5E-1485-4BCC-A505-70D397BC8619.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 所有的编译警告的名称:参见网址:http://fuckingclangwarnings.com注意这篇文章的创建时...
    zhangyin阅读 10,868评论 0 53
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • 红豆生南国,春来发几枝。愿君多采撷,此物最相思。 玲珑骰子安红豆,入骨相思知不知? 世人皆知,而不自知。 你我皆知...
    流沙祭年华阅读 1,142评论 2 4
  • 想起2016.12.31订阅的【天天用英语】,脑子里浮现的第一张画面就是上图,一转眼已经过去了11个月。 经营之圣...
    永仔_阅读 191评论 0 0