2015-02-24 50 views
4

我继承了一个面向iOS6 +的iOS项目。几个星期前,我将它移至Xcode 6并清理了所有警告。一个这样的警告是:Xcode不再显示已弃用的警告

'UITextAttributeTextShadowColor' is deprecated: first deprecated in iOS 7.0 - Use NSShadowAttributeName with an NSShadow instance as the value 

我修复此使用NSShadowAttributeName,但我做到了不正确,并导致应用程序在执行过程中的某一点崩溃。当我在几周后发现时,我暂时恢复了旧代码。但是,当我恢复到旧代码时,弃用警告未返回。我一直无法弄清楚为什么,并希望弥补这一点 - 它警告我,警告不会显示

在代码的某些部分,由于需要维护对iOS 6的支持,因此我需要消除弃用警告。在这些情况下,iOS 6和iOS 7+设备有单独的代码, iOS的6个码围绕有:

SILENCE_IOS7_DEPRECATION(

// iOS 6 code here 

); 

(见https://stackoverflow.com/a/26564750/3352624)这使用:

#define SILENCE_DEPRECATION(expr)         \ 
do {                \ 
_Pragma("clang diagnostic push")         \ 
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \ 
expr;                \ 
_Pragma("clang diagnostic pop")          \ 
} while(0) 

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr) 
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr) 

我选择针对调整的Xcode设置,关闭警告对于大量的代码。

所以我很困惑,为什么当我将代码恢复到之前的状态时,弃用警告不再显示。

这是我已经试过:

  1. 删除从我的代码
  2. 验证Deprecated Functions到SILENCE_DEPRECATION宏观的所有引用是Build Settings下目标
  3. 验证了我的Base SDK设为Latest iOS (8.1)和我的iOS Deployment Target设置为iOS 6.0
  4. -Weverything添加到Other Warnings FlagsBuild Settings下目标
  5. 经过了一个旧版本的混帐我的工作区这是以前我的任何变化
  6. 退出并重新启动的Xcode 6
  7. 试过的Xcode 5
  8. 重新启动我的电脑,然后就开始的Xcode

这些事情都不会导致弃用警告恢复。任何想法接下来我应该尝试什么?

+0

对于项目本身呢? – Chase 2015-02-24 22:13:57

+0

您可以更改目标和项目的警告设置。验证两者都已启用。 – Chase 2015-02-24 22:16:59

+0

@相传谢谢,我只是检查。对于目标和项目,“弃用函数”设置为“是”。将'Build Settings'放在'Levels'模式下显示它也解析为Yes。 – davew 2015-02-25 00:50:03

回答

7

我意识到这是一个非常古老的线程,但我想我会发布一个答案,以防其他人发现此线程。

它也取决于目标的部署目标设置(即在“TARGETS”下,点击应用并选择顶部的“常规”,查看“部署目标”的“部署信息”部分)。例如,如果我的部署目标为7.1,并使用iOS 8中弃用的函数,则不会收到警告。但是,如果我将部署目标设置为8.x或9.0,则会收到有关这些功能的警告。

+1

谢谢@guywithmazda,我刚回去测试一下。你是对的,如果我将部署目标从6.0调整到8.0,弃用警告再次出现。我仍然有点困惑,但是为什么我之前看到iOS 7弃用警告,因为项目总是有6.0的部署目标。你知道Xcode的任何变化会影响这个吗? – davew 2015-07-08 15:12:46

+0

对不起,我不知道。这可能是新版Xcode中的新行为,但这只是推测。 – guywithmazda 2015-07-09 16:03:20