如何在iOS Objective-C头文件中将函数标记为已弃用?

时间:2009-09-18 10:04:32

标签: objective-c function deprecated

如何在iOS Objective-C头文件中将函数标记为已弃用?

我猜这个函数之后只有一些关键字可以贴在哪里?

如果有人尝试使用已弃用的函数,我希望生成编译器警告,类似于Apple API中的行为。

5 个答案:

答案 0 :(得分:61)

尝试在方法声明中附加属性:

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

取自here

答案 1 :(得分:7)

蒂姆的回答实际上会产生编译警告;其他版本只是评论,没有影响w.r.t.编译器。

如果查看/usr/include/AvailabilityMacros.h,您将看到Apple如何做到这一点。该标头使用__attribute__((deprecated))__attribute__((unavailable)),具体取决于API是否存在但已弃用,或者是否已从操作系统中删除。

答案 2 :(得分:5)

您可以使用<add name="Python FastCGI" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\Python27\python.exe|D:\Python27\Scripts\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> 中定义的宏,而不是__attribute__((deprecated))

<cdefs.h>

或者您可以使用- (void)fooBar __deprecated; // Or better: - (void)fooBar __deprecated_msg("Use barFoo instead."); 中定义的宏:

<AvailabilityMacros.h>

如果您使用Objective-C,那么您将使用现代编译器没有任何区别,因此您可以使用Apple短语法- (void)fooBar DEPRECATED_ATTRIBUTE; // Or better: - (void)fooBar DEPRECATED_MSG_ATTRIBUTE("Use barFoo instead."); 。但是如果您将C用于跨平台,则__deprecated_msg()使用最佳可用性定义(例如,它支持GCC3.1)。

答案 3 :(得分:2)

来自Apple的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 */

答案 4 :(得分:2)

您也可以关注HeaderDoc manual。使用此语法的地方:

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