OC,nil,NULL,Nil,kCFNull

YYModel源码中有一句:kCFNull

 

复制代码
//解析model属性并附值
+ (instancetype)yy_modelWithDictionary:(NSDictionary *)dictionary {
    if (!dictionary || dictionary == (id)kCFNull) return nil;
    if (![dictionary isKindOfClass:[NSDictionary class]]) return nil;
    
    Class cls = [self class];
    //解析class得到modelmeta对象
    _YYModelMeta *modelMeta = [_YYModelMeta metaWithClass:cls];
    //本地class类型映射
    if (modelMeta->_hasCustomClassFromDictionary) {
        cls = [cls modelCustomClassForDictionary:dictionary] ?: cls;
    }
    
    NSObject *one = [cls new];
    //附值函数
    if ([one yy_modelSetWithDictionary:dictionary]) return one;
    return nil;
}

复制代码

 

 

nil:  define the id of a null instance, 指向一个(实例)对象的空指针

如:NSString *str = nil;

  NSDate *date = nil;

Nil:defines the id of a null class, 指向一个类的空指针

  Class class = Nil;

NULL:定义其他类型(基本类型,C类型)的空指针

  char *p = NILL;

NSNull:数组中元素的占位符, 数据中的元素不能为nil(可以为空,也就是NSNull)

原因:nil 是组数的结束标识

如果使用nil,在n个数组中的第k个,那个数组的长度就只有 k 个元素。

  

kCFNull: NSNull 的单例

CoreFoundation 中有一段对 kCFNull的定义, 实际上就是 NSNull 的单例

typedef const struct CF_BRIDGED_TYPE(NSNull) __CFNull *CFNullRef;

CF_EXPORT

CFTypeID CFNullGetTypeID(void);

 

CF_EXPORT 

const CFNullRef kCFNull;//the singleton null instance

 

NSNull *null1 = (id)kCFNull;

NSNull *null2 = [NSNull null];

 

posted @   wjwdive  阅读(355)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示