我是开发一个相当大的iPad应用程序的团队的一员,因此我们创建了许多不同的类。问题是有些方法现在已经非常过时了,我不想简单地删除它们,因为我知道整个系统的某些部分使用这些方法……但是有更好的(较新的)变体可以使用(一些旧的实际上调用了新的,但是整个类接口变得混乱了)。
有没有一种方法可以将某些方法标记为已折旧(比如Java中的@deprecated
和.NET中的[Obsolete]
)。
我看到Apple使用Availability.h,并且有如下标签
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);
..。这是唯一的方法吗(+ App Store这样做安全吗?)或者,有没有其他方法可以在Xcode中标记一个警告?
发布于 2010-10-11 18:02:29
弃用语法
提供了用于将方法标记为已弃用的语法:
@interface SomeClass
-method __attribute__((deprecated));
@end
或者:
#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE; // or some other deployment-target-specific macro
@end
发布于 2012-09-13 13:34:07
我的意思是,编写__deprecated更容易:
- (void)myDeprecatedMethod __deprecated;
- (int)methodNameDeprecated:(int)param __deprecated;
也适用于类
__deprecated
@interface MyDeprecatedClass
// ... some properties and methods ...
@end
发布于 2014-04-07 08:53:25
如果您想提供带有弃用标志的其他消息,您可以使用以下标志。
@property (strong, nonatomic) NSString *catName
__deprecated_msg("use name instead.");
// -- Or --
@property (strong, nonatomic) NSString *catName
DEPRECATED_MSG_ATTRIBUTE("use name instead.");
// -- Or --
@property (strong, nonatomic) NSString *catName
__attribute__((deprecated("use name instead.")));
使用上面提到的标志,您可以告诉我们为什么要弃用它,或者开发人员将来应该使用什么方法。
https://stackoverflow.com/questions/3908715
复制