首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSObject的类层次结构

在Objective-C中,NSObject是一个基类,它提供了一些基本的方法和属性,如内存管理、消息传递等。它是Objective-C中大多数类的根类,包括了Cocoa框架中的所有类。NSObject的类层次结构如下:

  1. NSObject:基类,提供基本的方法和属性。
  2. NSValue:用于封装基本数据类型的值,如intfloatCGPoint等。
  3. NSNumber:用于封装数字类型的值,如intfloatdouble等。
  4. NSString:用于表示不可变字符串。
  5. NSMutableString:用于表示可变字符串。
  6. NSArray:用于表示不可变数组。
  7. NSMutableArray:用于表示可变数组。
  8. NSDictionary:用于表示不可变字典。
  9. NSMutableDictionary:用于表示可变字典。
  10. NSSet:用于表示不可变集合。
  11. NSMutableSet:用于表示可变集合。
  12. NSData:用于表示不可变的二进制数据。
  13. NSMutableData:用于表示可变的二进制数据。
  14. NSDate:用于表示日期和时间。
  15. NSTimeZone:用于表示时区。
  16. NSCalendar:用于表示日历。
  17. NSLocale:用于表示地区设置。
  18. NSTimer:用于定时执行任务。
  19. NSURL:用于表示URL。
  20. NSRunLoop:用于处理事件和任务。
  21. NSOperation:用于表示操作,可以用于并发处理任务。
  22. NSOperationQueue:用于管理并发操作。
  23. NSThread:用于表示线程。
  24. NSBlockOperation:用于表示基于Block的操作。
  25. NSInvocationOperation:用于表示基于方法的操作。
  26. NSPort:用于表示端口。
  27. NSConnection:用于表示连接。
  28. NSDistantObject:用于表示远程对象。
  29. NSProxy:用于表示代理对象。
  30. NSValueTransformer:用于转换数据类型。
  31. NSFormatter:用于格式化数据。
  32. NSUserDefaults:用于存储用户偏好设置。
  33. NSFileManager:用于管理文件和目录。
  34. NSPredicate:用于表示查询条件。
  35. NSSortDescriptor:用于表示排序条件。
  36. NSComparator:用于比较对象。
  37. NSLock:用于实现线程同步。
  38. NSConditionLock:用于实现条件锁。
  39. NSRecursiveLock:用于实现递归锁。
  40. NSNull:用于表示空值。

在这个类层次结构中,NSObject是根类,其他类都是从NSObject派生出来的子类。这些类都是Objective-C中非常常用的类,它们在开发过程中可以大大提高开发效率。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NSObject_IMPL 是 NSObject 编译后结构

NSObject 被编译成了 NSObject_IMPL 结构体。 Person 被编译成了 Person_IMPL 结构体。...Person 内部还增加了一个 NSObject_IMPL 结构体 我们知道 Person 继承于 NSObject, 所以它底层实现中是第一个成员是父结构体,就是底层继承实现方式。...用这样方式拥有父所有的成员变量。 NSObject_IMPL 是 NSObject 编译后结构体,它内部只有一个 Class 类型 isa 成员变量。...这是为了更加直观提现出它代表信息,所以在获取isa 方法中,将它强制转换成了Class 类型, 代码如下: inline Class objc_object::ISA() { ......return (Class)(isa.bits & ISA_MASK) } 总结: 1.底层实现是结构体。 2.继承是通过把父结构体声明为本类结构第一个成员变量实现

45460

层次结构设计

图1 在写程序时,我们会经常遇到如上图所示一种情形——深层调用,ClassD1和ClassD2需要调用ClassA关联ClassX、ClassY和ClassZ等,对于这种情况,经常见到通过构造函数一层层往下传递做法...它不符合开闭原则,当新增一个依赖时,就需要增加一个参数,结果会导致参数列表膨胀,样子也非常难看。 那究竟怎么做更好了?...对这个问题思考过很多次,但并没有找到一个完全满意解决方案,针对这种情形,我主要采取两种方法: 1.尽量让ClassA成为一个单例,这样ClassD要获取ClassX等就非常方便了,即使增加一个ClassX1...ClassA成为单例,这个时候采用第二种办法,即总是通过构造函数将ClassA往下传递,如ClassB(ClassA*);ClassC(ClassA*);ClassD(ClassA*),这种办法也是符合开闭原则,...再增加一个ClassX1也非常方便; 办法是提出来了,但这并不是最优,这种情形就如同一个公司或一个组织人数众多,在采取以上两个方法 之间,就好先考虑组织扁平化,减少信息传递层次,增加传递效率。

55230

IOS底层原理之NSObject结构

疑惑 在OC程序中,我们知道NSObject是“万物之源”,所有的都继承自NSObject,我们疑惑是在OC底层NSObject是什么样结构在OC底层是什么样?...我们在中定义属性、成员变量、方法、实现协议等是以什么样形式存在?这篇文章我们将深入OC底层探究NSObject结构。...OC底层NSObject 1、clang命令获取main.mC++代码 为了知道NSObject底层是什么样,clang也许是一个选择。...实例对象isa指向isa指向; 元指向根元; 根元指向自己; NSObject是nil,根元NSObject。...成员变量存储在class_ro_t结构体中,而不是class_rw_t结构体中。 方法在中,对象方法才在本类中。 文章由作者:风紧扯呼 逻辑iOS学员提供

35330

与对象」NSObject对象分类

其中,isa指向该实例对象地址,是实例对象编译后结构体中第一个成员变量。...(iVar)(专指成员变量自身定义结构,不是存储真实赋值,需与实例对象中存储成员变量进行区分) ?...对象存储数据结构对象(MetaClass) 说起元对象,相较于上面两种而言,不是很熟悉,元对象没有显式创建过程,用一句不太准确的话概括就是元对象是对象对象。...= 0x7fff89e066c0 通过上述代码段和图片可知,JLDog是JLAnimal, JLAnimalNSObject。...小结 通过上面的分析,将NSObject对象分成了实例对象、对象和元对象,进而了解了不同对象中职责和存储信息不同,从而对NSObject对象有了更深层次了解。

63010

设计模式之桥接模式(Bridge 模式)功能层次实现层次层次结构混杂与分离桥接模式具体实例小结

功能层次 实现层次 桥接模式具体事例 小结 Bridge意思是桥梁,作用就是将两边连接起来。桥接模式作用也是如此,桥接模式分别功能层次实现层次连接起来。...这里出现了两个可能有点陌生词汇,功能层次实现层次。 所以我们先来介绍这两种层次结构,因为桥接模式就是为了连接这两种层次结构。...父通过声明抽象方法来定义接口 子类通过实现具体方法来实现接口 层次结构混杂与分离 所以学习了功能层次和实现层次之后,我们在编写子类就可以考虑一个问题,我们要添加功能还是添加实现。...当层次结构只有一层时候,功能层次结构与实现层次结构是混在一起,这样就容易是层次结构变得复杂难以理解。...因此,我们需要将功能层次和实现层次分离为两个独立层次结构,但又不能简单分开,分开之后又要添加某种联系,这种联系就是桥梁,也就是我们本文要讲桥接模式。

72410

文件层次结构

文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中主要目录及目录内容。...在大多数情况下,它是一个传统BSD文件系统层次结构形式化与扩充。 / 第一层次结构 根、 整个文件系统层次结构根目录。.../usr/ 用于存储只读用户数据第二层次; 包含绝大多数(多)用户工具和应用程序。[11] /usr/bin/ 非必要可执行文件 (在单用户模式中不需要);面向所有用户。.../usr/local/ 本地数据第三层次, 具体到本台主机。通常而言有进一步子目录, 例如:bin/、lib/、share/....例如:数据库、包装系统元数据等。 /var/lock/ 锁文件,一跟踪当前使用中资源文件。 /var/log/ 日志文件,包含大量日志文件。 /var/mail/ 用户电子邮箱。

91840

runtime那些事(二)——NSObject数据结构

在整理复习 runtime 知识点过程中,发现不得不巩固 runtime 关于数据结构方面的知识,所以单独开篇关于 NSObject 文章 目录 ---- 准备:runtime 源码 1....因此想要深入学习 iOS 底层知识,NSObject 拿来开刀再合适不过了(一脸正经:哈哈哈(ಡωಡ)hiahiahia) 首先,进入查看 NSObject 结构 @interface NSObject...class_rw_t数据结构 可以看到,属性、方法、遵循协议都以 二维数组 形式存储,都是可读写属性,其中包含了初始信息(来源于 class_ro_t 类型常量指针)、以及分类信息...---- 上面所写,是对 NSObject 结构分析,文章初衷是计划把 IMP 、NSInvocation、以及 NSObject 初始化流程等 runtime 知识点都囊括,作为一个总结。...但 runtime 内容真的不是一两篇就可以写完,写作过程中发现仅仅是 NSObject 数据结构介绍就占用了这么多篇幅。下一篇准备写下 NSObject 在初始化流程。

85520

Agens层次

层次是另一种主要方法,它具有一些十分必要特性使得它成为广泛应用方法。它生成一系列嵌套树来完成聚。单点聚处在树最底层,在树顶层有一个根节点聚。...根节点聚覆盖了全部所有数据点。...层次分为两种: 合并(自下而上)聚(agglomerative) 分裂(自上而下)聚(divisive) 目前 使用较多是合并聚 ,本文着重讲解合并聚原理。...Agens层次原理 合并聚主要是将N个元素当成N个簇,每个簇与其 欧氏距离最短 另一个簇合并成一个新簇,直到达到需要分簇数目K为止,示意图如下: ?...,因此此时剩下 6+1=7 个簇 一直重复上一步操作,直到簇数量为 3 时候,就算是分簇完成 Agens层次实现: 随机生成26个字母: # 生成坐标字典 def buildclusters(

69140

层次模型(树形结构

层次数据模型存储结构 邻接法: 按照层次树前序穿越顺序把所有记录值依次邻接存放,即通过物理空间位置相邻来体现层次顺序。 链接法: 用指针来反映数据之间层次联系。...层次模型优点: 层次模型数据结构比较简单清晰 层次数据库查询效率高(因为层次模型中记录之间联系用有向边表示,这种联系在DBMS中用指针来实现,当要存取某个结点记录值,DBMS就沿着这一条路径很快找到该记录值...,所以层次数据库性能优于关系系数据库,不低于网状数据库) 层次数据模型提供了良好完整性支持 层次模型缺点: 现实世界中很多联系是非层次,如结点之间具有多对多联系 一个结点具有多个双亲等,对插入删除操作限制比较多...,因此应用程序编写比较复杂 查询子女结点必须通过双亲结点 由于结构严密,层次命令趋于程序化 层次模型对具有一对多层次联系部门描述非常自然、直观,容易理解。...这是层次数据库突出优点。

2.2K30

层次算法

层次是一种构建聚层次结构算法。该算法从分配给它们自己集群所有数据点开始。然后将两个最近集群合并到同一个集群中。最后,当只剩下一个集群时,该算法终止。...简介 层次(Hierarchical clustering)是一种常见算法,它将数据点逐步地合并成越来越大簇,直到达到某个停止条件。...层次可以分为两种方法:自下而上聚合法(agglomerative)和自上而下分裂法(divisive)。...平均链接:两个聚之间距离定义为一个聚每个点与另一个聚每个点之间平均距离。 Centroid-linkage:找到聚1质心和聚2质心,然后在合并前计算两者之间距离。...不同链接方法导致不同集群。 3. 树状图 树状图是一种显示不同数据集之间层次关系。正如已经说过,树状图包含了层次算法记忆,因此只需查看树状图就可以知道聚是如何形成。 4.

1K10

【Java 基础篇】Java抽象:构建灵活继承层次结构

导言 抽象是面向对象编程中重要概念之一,它允许定义一种具有一定行为和结构,但不能直接实例化。在Java中,抽象通过abstract关键字进行声明,并且可以包含抽象方法和具体方法。...本篇博客将围绕Java抽象展开讨论,包括抽象概念、语法、用法以及抽象带来优势。 一、抽象概念 抽象是一种特殊,它不能被实例化,只能用作其他。...通过在抽象中定义抽象方法,强制子类实现这些方法,确保子类具有一定行为和结构。...这样可以避免代码重复编写,提高了代码复用性和可维护性。 2. 规范子类行为 抽象可以定义抽象方法,强制子类实现这些方法,确保子类具有一定行为和结构。...同时,也强调了抽象优势,包括封装共享代码、规范子类行为和实现多态性。希望通过本篇博客阅读,读者对Java抽象有了更深入理解,并能够灵活运用抽象构建灵活继承层次结构

30350

层次与聚

特征聚是指根据对象特征向量矩阵来计算距离或者相关性来实现聚,例如各种层次和非层次。而图聚则针对是复杂网络数据,有随机游走、贪心策略、标签传播等算法等。...⑵模糊划分,对象归属身份信息可以是连续,也即身份信息可以是0到1中间任意值。 聚结果可以输出为无层级分组,也可以是具有嵌套结构层次树。...层次 层次(hierarchical clustering)就是通过对数据集按照某种方法进行层次分解,直到满足某种条件为止。在R中最常用为stats包中hclust()函数。...在生态学中Bray-Curtis距离矩阵一般使用方法"average"进行分析,其聚结构介于单连接和完全连接聚之间。...⑷最小方差聚 Ward最小方差聚是一种基于最小二乘法线性模型准则方法。分组依据是使组内距离平方和(方差)最小化,由于使用了距离平方,常常使聚树基部过于膨胀,可取平方根再进行可视化。

1.2K30

算法之层次

层次(Hierarchical Clustering)是聚算法一种,通过计算不同类别的相似度创建一个有层次嵌套树。...层次怎么算 层次分为自底向上和自顶向下两种,这里仅采用scikit-learn中自底向上层次法。...将数据集中每一个样本都标记为不同类 计算找出其中距离最近2个类别,合并为一 依次合并直到最后仅剩下一个列表,即建立起一颗完整层次树 以下为看图说话~ 感谢 Laugh’s blog借用下说明图 把所有数据全部分为不同组...将相邻最近两组归为同一组 重复第二步,直到合并成为一个组,聚结束 聚过程散点图变化一下,就是我们要层次层次 Python 实现 import numpy as np from sklearn.cluster...,默认为不缓存 n_clusters: 表示最终要查找类别的数量,例如上面的 2 pooling_func: 一个可调用对象,它输入是一组特征值,输出是一个数 返回值 labels: 每个样本簇标记

2.7K40

【机器学习】层次

然后介绍了层次算法:凝聚层次和分裂层次算法,两者皆以样本集作为表示,常用欧式距离作为相似性度量,分层次。最后介绍了层次算法特点,可视化,复杂度。...层次 层次表示可以看作是基于样本,表示属于第样本集合,即作为第表示。相似性度量可以用“欧式距离”。...层次分为两种,一种是自底向上凝聚层次,一种是自顶向下分裂层次。...: 平均距离: 4)直到簇数为,否则循环2) 分裂层次 输入:样本数据,损失函数,聚簇数 输出:样本 1)初始化所有样本为一个簇: 2)计算样本两两之间距离: 3)计算当前所有簇,损失函数...层次算法特点: 可视化 采用计算样本两两之间距离,时间复杂度为 凝聚和分裂不可逆性 The End

1.1K10
领券