gpt4 book ai didi

objective-c - 如何在 Xcode 中弃用方法

转载 作者:IT老高 更新时间:2023-10-28 11:24:16 26 4
gpt4 key购买 nike

我们将库发给客户,我想将一些方法标记为“已弃用”,因为我们更改了它们(就像 Apple 在 iPhone SDK 中所做的那样)。

我见过 __OSX_AVAILABLE_BUT_DEPRECATED 预处理器宏,它映射到 __AVAILABILITY_INTERNAL,它映射到 __attribute__((deprecated))...

嗯,我对这些东西有点困惑!

有人知道吗?

最佳答案

__attribute__((deprecated))gcc way (也是 supported in clang )将函数/方法标记为已弃用。当一个被标记为“已弃用”时,只要有人调用它就会产生一个警告。

普通函数的语法是

__attribute__((deprecated))
void f(...) {
...
}

// gcc 4.5+ / clang
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}

Objective-C 的方法是

@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end

您还可以将整个类标记为已弃用

__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end

Apple 还提供 <AvailabilityMacros.h> header 提供扩展为上述属性的 DEPRECATED_ATTRIBUTE 和 DEPRECATED_MSG_ATTRIBUTE(msg) 宏,如果编译器不支持属性,则没有。请注意,此 header 在 OS X/iOS 之外不存在。


旁注,如果您使用 Swift,请使用 @available attribute弃用一个项目,例如

@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}

关于objective-c - 如何在 Xcode 中弃用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com