消除iOS警告

作者: FishSha | 来源:发表于2017-05-12 16:42 被阅读516次

⚠️Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

XCode 6.3的新特性:nullability annotations。

现在都有用到Swift,有个属性为optional,即!和?,!表示non-optional,?表示optional,而在Object-C中则没有这个区分,如果混编的话就会出现问题了,Swift调用OC对象的时候,应为OC的对象是默认不设值的,Swift就不知道OC的对象是optional还是non-optional,但还好,编译器默认情况下会隐式的将OC对象当作non-optional。

所以在6.3中新增了两个类型注释:

__nullable:表示对象可以为NULL和nil;

__nonnull:表示对象可为NULL和nil;

报警告的原因就是没有遵守这个规则。

解决方案:

pointer is missing a nullability type specifier

根据上下文加入__nonnull或者__nullalble。

函数:

- (void)uploadProfileForPatient:(PatientInfo * __nonnull)patient completion:(void(^ _Nullable)(void))completionBlock;

属性0:

@property(nonatomic, strong, nonnull)NSDate *lastRefreshMessageTime;

属性1:

@property(nonatomic, strong)NSDate * __nonnull lastRefreshMessageTime;

推荐属性0的写法,看着清楚啊。

如果不确定,可以使用_Null_unspecified,未确定的,不引起警告。

当然每个该警告都这样去写很麻烦,官方提供了一个Marco宏 NS_ASSUME_NONULL_BEGINNS_ASSUME_NONULL_END

Nonnull Macro

⚠️Method possibly missing a [super awakeFromNib] call

复写继承的父类方法

- (void)awakeFromNib

{

[super awakeFromNib];

[self.button useThemeBg];

}

⚠️ 'M_PI_2' is deprecated: Please use 'Double.pi / 2' or '.pi / 2' to get the value of correct type and avoid casting.

M_PI在Swift 3.0中以及废弃了,建议使用Double.pi / *代替。

一个PI代表180度,“_2”代表180 * 1/2,即90度;

⚠️Conditional downcast from 'NSString?' to 'String' is a bridging conversion; did you mean to use 'as'?

Optional conversion string

if let chars = tempCharacters as String? {

matchedCharacters = matchedCharacters + chars

}

因为if会在隐式的做一次unwarpped拆包,所以得到的chars是String类型

相关文章

  • iOS编译警告

    iOS编译警告-消除方法参数检查相关的警告 iOS编译警告-消除注释中的警告

  • 去除Xcode的一些编译警告

    Semantic Warnings iOS消除对应的警告!

  • iOS 消除警告

    消除警告: #pragma clang diagnostic push #pragma clang diagnos...

  • iOS消除警告

    在iOS开发过程中, 我们可能会碰到一些警告,例如:系统弃用方法,没有实现的selector等一些警告。对于有强迫...

  • iOS 消除警告

    强迫症福音 - 如果你想让你的项目没有警告 方法弃用警告 -Wdeprecated-declarations 不...

  • iOS警告消除

    背景:目前iOS 项目警告达到了400多个,夹杂着第三方的, 自己项目代码的混在一起,根本无法及时关注到是否是由于...

  • 消除iOS警告

    ⚠️Pointer is missing a nullability type specifier (_Nonnu...

  • iOS消除警告

    本文主要讲的是使用clang命令,他的作用是用来消除特定区域clang的编译警告一般格式是使用 下边的链接是cla...

  • iOS 消除警告

    消除警告大全

  • iOS消除警告

    使用格式 忽略弃用的警告 忽略不兼容指针类型 循环引用 未使用变量 未使用default 参考 Clang's s...

网友评论

    本文标题:消除iOS警告

    本文链接:https://www.haomeiwen.com/subject/hfaztxtx.html