美文网首页
自定义宏标记某个类为已废弃

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

作者: Fsn_soul | 来源:发表于2016-07-31 16:08 被阅读425次

在重构的时候,有时候会因为有了一个更好的类而想要标记某个类为已废弃.这时候就需要用到__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

相关文章

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

    在重构的时候,有时候会因为有了一个更好的类而想要标记某个类为已废弃.这时候就需要用到__attribute__以及...

  • 废弃属性或方法

    标记为已废弃但不给定替换方法提示信息DEPRECATED_ATTRIBUTE 标记为已废弃并给定替换方法提示信息D...

  • 并发模拟

    自定义注解标记属性 用于标记【线程安全】注解类。 用于标记【线程不安全】注解类。 用于标记【推荐】注解类。 用于标...

  • Android 消息机制(自定义 Handler 防内存泄漏)

    Kotlin 实现 kotlin 中处在其他类中,没有标记 inner 的类为嵌套类,标记了 inner 的类为内...

  • OC基础

    宏: 定义宏,起头用项目的前缀,类如:YKscreenWidth 自定义的myViewcontroller,左上角...

  • 关于iOS废弃的API 宏定义

    如你所知,已废弃(Deprecated)的API指的是那些已经过时的并且在将来某个时间最终会被移除掉的方法或类。通...

  • zabbix Macros Templates item

    Macros zabbix宏 自定义宏: 全局配置-->Templates--->Host ,优先级Host为高,...

  • pybind11—函数,返回值,数据转换

    前言 类型 返回自定义类型数据(结构体/类) 定义一个C++结构体,表示自定义的类型。 接口函数输入:废弃(无用处...

  • Ruby 方法的标记法

    介绍一下 Ruby 帮助文档中方法名的标记方法. 标记某个类的方法时, 就像 Array#each, Array#...

  • 自定义注解 实现指定字段备份

    通过定义的注解标记指定类的属性,再反编译获取标记属性,进行copy熟悉 1、自定义注解 2、需要copy的对象 3...

网友评论

      本文标题:自定义宏标记某个类为已废弃

      本文链接:https://www.haomeiwen.com/subject/rsztsttx.html