【发布时间】:2012-09-21 02:13:31
【问题描述】:
这个问题是针对iOS版本兼容性的。
如果一个函数是使用respondsToSelector 的典型Objective-C 风格方法,我知道如何检查它是否存在。即对于这样的方法:
- (void) someMethod:(NSInteger)someParameter;
你可以使用:
if ([self respondsToSelector:@selector(someMethod:someParameter)]) {
//do something
}
但是 C 风格的函数呢?如何检查是否存在如下所示的函数:
void CStyleFunctionName(FoundationTypeRef parameter);
谢谢!
【问题讨论】:
-
这不是方法,而是函数。 How to Check if the function exists in C/C++ 的可能重复项另请参阅:Can I redefine a function or check if it exists?
-
您可以通过
if (CStyleMethodName != NULL) { ... }来查看符号是否已定义。例如,如果您想与旧版本的 iOS 兼容,这就是您想要做的。 -
@FabianKreiser 仅在支持弱链接时才有效。
-
我知道,但它适用于最新版本的 Xcode,@Keller 最近询问了有关 iOS 6 的更多问题,我认为他目前正在更新应用程序并希望使其向后兼容。 ;)
-
那么,您没有阅读the docs,是吗?