我如何标记一个函数在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 */