我如何标记一个函数在iPhone目标C头文件中被弃用?
有谁知道如何做到这一点?
我猜这只是一些关键字,我可以坚持function的地方?
编辑 :我想要生成一个编译器警告应该任何人尝试和使用不赞成的function,类似于苹果的API中看到的行为。
干杯! 缺口。
尝试追加一个属性到你的方法声明中:
- (void)fooBar __attribute__ ((deprecated));
从这里采取。
Tim的回答实际上会产生一个编译器警告; 其他版本只是对编译器没有任何影响的注释。
如果你看看/usr/include/AvailabilityMacros.h,你会看到苹果如何做到这一点。 该头文件使用__attribute__((deprecated))
和__attribute__((unavailable))
具体取决于API是否存在,但不推荐使用,或者实际上已从操作系统中删除。
您可以使用<cdefs.h>
定义的macros来代替__attribute__((deprecated))
:
- (void)fooBar __deprecated; // Or better: - (void)fooBar __deprecated_msg("Use barFoo instead.");
或者您可以使用<AvailabilityMacros.h>
定义的macros:
- (void)fooBar DEPRECATED_ATTRIBUTE; // Or better: - (void)fooBar DEPRECATED_MSG_ATTRIBUTE("Use barFoo instead.");
如果您使用Objective-C,那么您将使用现代编译器没有任何区别,所以您可以使用Apple简短语法__deprecated_msg()
。 但是,如果您使用C进行跨平台,则DEPRECATED_MSG_ATTRIBUTE()
将使用最佳的可用性定义(例如,它支持GCC3.1)。
从苹果的SFAuthorization.h:
/*! DEPRECATED: Use obtainWithRight:flags:error: @method permitWithRight:flags: @abstract Call permitWithRight to gain a right to have access to a privilege operation. @param rightName The name of an authorization right. @param flags Authorization flags. */ - (OSStatus)permitWithRight:(AuthorizationString)rightName flags:(AuthorizationFlags)flags;
如果你不使用自动文档生成器,我会说这样的东西就足够了:
- (void)doSomething; /* DEPRECATED */
您也可以按照HeaderDoc手册 。 在使用这个语法的地方:
/*! * @abstract Foo is good for bar. * * @deprecated in version 2.0 */