如何在iOS Objective-C头文件中将函数标记为已弃用?
我猜这个函数之后只有一些关键字可以贴在哪里?
如果有人尝试使用已弃用的函数,我希望生成编译器警告,类似于Apple API中的行为。
答案 0 :(得分:61)
答案 1 :(得分:7)
如果查看/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
*/