如何标示的功能,如在iOS的Objective-C头文件被弃用?(How do I flag a f

2019-07-18 11:58发布

如何标示的功能,如在iOS的Objective-C头文件被弃用?

我猜有只是一些关键字某处功能后,我能坚持?

我想对于将要生成任何人试图使用过时的功能,类似于苹果的API看到的行为的编译器警告。

Answer 1:

尝试附加一个属性,以您的方法声明:

- (void)fooBar __attribute__ ((deprecated));

来自这里 。



Answer 2:

蒂姆的回答实际上将产生一个编译器警告; 其他版本仅仅是它没有任何效果WRT编译意见。

如果你看一下/usr/include/AvailabilityMacros.h,你会看到苹果是如何做到这一点。 该标头使用__attribute__((deprecated))__attribute__((unavailable))根据API是否是存在的,但不推荐使用,或者实际上已经从OS除去。



Answer 3:

代替的__attribute__((deprecated))可以使用在使用中定义的宏<cdefs.h>

- (void)fooBar __deprecated;
// Or better:
- (void)fooBar __deprecated_msg("Use barFoo instead.");

或者你可以使用定义的宏<AvailabilityMacros.h>

- (void)fooBar DEPRECATED_ATTRIBUTE;
// Or better:
- (void)fooBar DEPRECATED_MSG_ATTRIBUTE("Use barFoo instead.");

如果您使用的Objective-C,它没有什么区别,你要使用现代化的编译器,所以你可以去苹果短语法__deprecated_msg() 但是,如果你用C跨平台,然后DEPRECATED_MSG_ATTRIBUTE()采用了最佳的可用性定义(例如,它支持GCC3.1)。



Answer 4:

从苹果公司的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 */


Answer 5:

您也可以按照HeaderDoc手册 。 如果这句法使用:

/*!
 * @abstract Foo is good for bar.
 *
 * @deprecated in version 2.0
 */


文章来源: How do I flag a function as being deprecated in an iOS Objective-C header file?