2015-10-20 108 views
1

为了兼容,我很遗憾地需要使用iOS 9中不推荐使用的方法,并且它会生成警告,在尝试15个小时后我无法抑制。 例子:xcode7禁用弃用警告

'CFWriteStreamCreateWithFTPURL' was deprecated in iOS 9.0: Use NSURLSessionAPI for ftp requests' 

我曾尝试:

  1. 项目>目标>构建阶段>点击相应的文件,并选择标志-w
  2. 项目>目标>构建阶段>点击相应的文件和选择标志
  3. 项目>项目>构建设置> Apple LLVM 7.0 - 警告 - 所有语言>贬损功能>否
  4. 项目>项目> Bui LD设置>苹果LLVM 7.0 - 警告 - 目标C>重写折旧Objective C的方法>无
  5. 试图找到编译选择,但它看起来是不可能的
  6. 编辑:我需要用贬值的方法,无论什么操作系统版本是在设备上

我可以在ObjC中禁止警告,但它似乎并没有在Swift 2.0中工作,我不得不承认,它开始真的bug我,我知道我必须使用不同的方法最终,但现在这是不可能的。

你如何抑制xCode 7/Swift 2中的警告?

+0

看看这个问题:http:// stackoverflow。 com/questions/31540446/how-to-silence-a-warning-in-swift-2-0 – joern

+0

感谢您的快速回复,但在您的主题中,条件汇编似乎是建议的答案,但它可能不是对我来说是一个好的解决方案,因为我需要使用折旧方法而不管操作系统版本。 – srolesen

回答

0

我是问上述问题的人,如果有人在这里寻找相同问题的答案,这里是我迄今为止发现的: 点1-6不能迅速生效,因为没有预编译器。 (如果真的如此,我希望苹果会在我试图使用-w时发出警告)

如果您确实需要使用已弃用的方法并且不愿忍受它生成的警告,那么您可以添加将代码的那部分作为框架,并将您的项目的那部分编译为以前的OS版本。最好不要使用已弃用的方法! http://www.rockhoppertech.com/blog/swift-framework-creation/

我希望这是有益的人,如果是错的,那么请告诉我为什么,以及如何下方:)

0

最简单的方法是有一个Objective-C文件的完整的具有类似名称的方法对已弃用的人,并打电话给他们。假设methodX已被弃用,那么您添加

- (void)methodX_deprecated { 
    [self methodX]; 
} 

并且放置一个编译器指令来忽略掉这个被弃用的方法。有什么不错的是,它告诉你代码中使用了不赞成使用的方法,因为最终你想摆脱它们(当iOS 11发布时)

+0

所以你桥接objc,因为在objc中,你可以使用预编译器来沉默警告,然后再桥接回到你需要使用的不赞成的swift方法? – srolesen