Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 查找部署目标之外的sdk使用实例_Xcode_Macos_Sdk_Deployment Target - Fatal编程技术网

Xcode 查找部署目标之外的sdk使用实例

Xcode 查找部署目标之外的sdk使用实例,xcode,macos,sdk,deployment-target,Xcode,Macos,Sdk,Deployment Target,我正在尝试构建一个自动化测试,以检查在当前部署目标之外调用的方法是否得到正确处理。下面是一个具体的例子: 我的应用程序设置为使用Mac OS X 10.8 sdk,部署目标设置为10.6 我经常使用setTimingFunciton:方法。它是在10.7中引入的 [[NSAnimationContext currentContext]设置计时函数:[名称为:KCAMEDIATIMINGFUNCTION的CAMediaTimingFunction INS]] 在大多数情况下,我通过检查来正确地限定

我正在尝试构建一个自动化测试,以检查在当前部署目标之外调用的方法是否得到正确处理。下面是一个具体的例子:

我的应用程序设置为使用Mac OS X 10.8 sdk,部署目标设置为10.6

我经常使用setTimingFunciton:方法。它是在10.7中引入的

[[NSAnimationContext currentContext]设置计时函数:[名称为:KCAMEDIATIMINGFUNCTION的CAMediaTimingFunction INS]]

在大多数情况下,我通过检查来正确地限定这个方法调用,以确保该方法存在,或者操作系统是正确的版本或更高版本。但是我错过了一个。而且它位于很少执行的代码路径中,所以即使是测试版测试也没有注意到它。过了很久它才回来咬我

我想构建一种自动化的方法来测试类似的东西,这些东西可以部署在集成服务器或其他类似的脚本化回归测试上。似乎有一种方法可以自动检查

不幸的是,用10.6SDK重新编译会导致许多错误,其中大部分是由于“现代obj-c”。当然,在使用10.8 sdk时,这些都不是错误。小心点,我可以从错误中挑选并找到方法调用——但这太复杂了,而且需要手动操作

有没有人知道一种静态检查这类事情的方法,而不需要人工从数百行错误中进行挑选

另外,我已经读过:如果部署目标<基本sdk,如何检查是否使用了不可用的方法?
这就推荐了另一种人工挖掘流程。问题是,人类的方法让我失望了。我错过了一个。我想要更确定一点的东西。

这里有个主意。取消定义并重新定义可用性宏,使其包含Clang将反对但不会影响程序流的内容。运行叮当声。

我使用了来自的技术,效果非常好。完全自动,不会遗漏任何东西