关于Xcode警告

关于Xcode警告

大多数警告(⚠️warning)其实不一定影响项目功能,但是警告太多容易隐藏一些真正需要解决的问题,而且考虑有些朋友的强迫症,Xcode的警告都是可以关闭的,出了直接的setting里治标不治本的设置外,更应该根据编译器的提示去真正解决它,这样的过程对更了解编译器也是有些帮助的。

NS_DEPRECATED_IOS

Implementing deprecated method.png

如图所示的警告其实挺常见的,特别是一些第三方库中,库的开发者因为一些原因会修改Api(其实iOS的工程师也经常干这事)。但是老的Api不能一下子干掉,毕竟线上有人再用,总得有个平稳过渡吧,所以就好存在一段时间存在新旧两个Api。这样等使用SDK的人都切换到新的,再把旧的Api干掉,对用户没有损失,也达到了目的。

但是怎么样告诉用户这个Api变了呢,测试不提bug开发哪有那么自觉呢,更何况谁也不会天天看文档啊。所以就有个这个宏,如下边这个方法的声明,注意黑体的部分,这样编译器就会给出警告,告诉你赶紧换吧,旧的方法是废弃的了。长时间使用废弃的方法是危险的,因为说不定哪天这个方法就找不到了,你就惨了。

  • - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration NS_DEPRECATED_IOS(3_0,8_0, "Implement viewWillTransitionToSize:withTransitionCoordinator: instead") __TVOS_PROHIBITED;

#pragma clang diagnostic push

但是有时候很多代码不是自己写的,按照建议替换新的代价比较大,而且万一改错了呢,岂不是更冤。所以可以通过#pragma 处理警告 clang diagnostic 的使用处理这个问题。
这篇博客写作时间有点早,它里面提到的那个链接我看到时已经打不开了(也可能是未使用科学上网的问题,不求证)。这里提到两个方法

// A
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    DFUServiceController *controller = [initiator start];
#pragma clang diagnostic pop

// B
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-implementations"
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self willInterfaceOrientionChange];
    if (toInterfaceOrientation >= 3) {
        _cropRect = _cropRectLandscape;
    } else {
        _cropRect = _cropRectPortrait;
    }
}
#pragma clang diagnostic pop

-Wdeprecated-declarations可以消除使用了不建议的Api的警告,-Wdeprecated-implementations处理实现了废弃的方法,也就是我遇到的情况。

因为fuckclangwarning无法打开了,所以我花了不少时间在这里找到需要的关键字,最后在项目搜索时发现项目里一些第三方库竟然用到过?,浪费了好久,记在这里,希望帮大家节省些时间。



作者:原鸣清
链接:https://www.jianshu.com/p/711a85e4340b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值