首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Objective-C2.0中将一个方法标记为已弃用?

如何在Objective-C2.0中将一个方法标记为已弃用?
EN

Stack Overflow用户
提问于 2010-10-12 01:53:58
回答 4查看 48.2K关注 0票数 146

我是开发一个相当大的iPad应用程序的团队的一员,因此我们创建了许多不同的类。问题是有些方法现在已经非常过时了,我不想简单地删除它们,因为我知道整个系统的某些部分使用这些方法……但是有更好的(较新的)变体可以使用(一些旧的实际上调用了新的,但是整个类接口变得混乱了)。

有没有一种方法可以将某些方法标记为已折旧(比如Java中的@deprecated和.NET中的[Obsolete] )。

我看到Apple使用Availability.h,并且有如下标签

代码语言:javascript
复制
__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);

..。这是唯一的方法吗(+ App Store这样做安全吗?)或者,有没有其他方法可以在Xcode中标记一个警告?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-12 02:02:29

弃用语法

提供了用于将方法标记为已弃用的语法:

代码语言:javascript
复制
@interface SomeClass
-method __attribute__((deprecated));
@end

或者:

代码语言:javascript
复制
#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE;  // or some other deployment-target-specific macro
@end
票数 164
EN

Stack Overflow用户

发布于 2012-09-13 21:34:07

我的意思是,编写__deprecated更容易:

代码语言:javascript
复制
- (void)myDeprecatedMethod __deprecated;
- (int)methodNameDeprecated:(int)param __deprecated;

也适用于类

代码语言:javascript
复制
__deprecated
@interface MyDeprecatedClass

  // ... some properties and methods ...

@end
票数 134
EN

Stack Overflow用户

发布于 2014-04-07 16:53:25

如果您想提供带有弃用标志的其他消息,您可以使用以下标志。

代码语言:javascript
复制
@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.")));

使用上面提到的标志,您可以告诉我们为什么要弃用它,或者开发人员将来应该使用什么方法。

票数 92
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3908715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档