美文网首页
NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_BEGIN

作者: yhj0129 | 来源:发表于2017-05-04 14:42 被阅读0次

    //最近看到这样一组宏定义,有了如下理解:

    NS_ASSUME_NONNULL_BEGIN

    ...

    NS_ASSUME_NONNULL_END

    一、在这两个宏之间的代码,所有简单指针都被假定设为非空(nonnull),因此我们只需要去指定那些可为空的(nullable)的指针,这样不用麻烦的去将每个属性或方法都去指定nonnull和nullable,减轻了开发的工作量。

    二、为了安全起见,苹果还制定了几条规则:

    1.typedef定义的类型的nullability(typeof(COREVIDEO_DECLARE_NULLABILITY))特性通常依赖于上下文,即使是在Nonnull组成的这两个宏定义区域设置中,也不能假定它为nonnull。

    2.复杂的指针类型(如id *)必须显示去指定是nonnull还是nullable。例如,指定一个指向nullable对象的nonnull指针,可以使用”__nullable id * __nonnull”。

    3.我们经常使用的NSError **通常是被假定为一个指向可为空的nullable NSError对象的nullable指针。

    相关文章

      网友评论

          本文标题:NS_ASSUME_NONNULL_BEGIN

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