NSObject类了解

简介: 今天看一本书,偶然间看到关于继承的那一章。上面有一句话是这么说的:在OC中,允许定义自己的根类,但通常不这么做,而是希望利用现有的类。因此,我们所定义的类都是属于NSObject根类的派生类。

今天看一本书,偶然间看到关于继承的那一章。上面有一句话是这么说的:在OC中,允许定义自己的根类,但通常不这么做,而是希望利用现有的类。因此,我们所定义的类都是属于NSObject根类的派生类。
看到这里,肯定有人说,这不都是废话吗?大家都知道啊!可是,我就想,既然苹果允许自己定义根类,那么怎么定义呢?我尝试用xcode进行定义一个不继承自任何类的基类,并没有成功。subclass那一栏必须选择。
然后,我又想,我自己不能定义基类,那么NSObject是个基类,它是继承自什么呢?于是点开xcode,进入NSObject类中查看究竟。


img_681b09fef4a3b60ae1d8bc363385dd2d.png
image.png

NSObject类没有继承的父类,而是有一个协议,查看这个协议。


img_2c88056d744f3699f1888b8f2dd60aad.png
image.png

才发现,原来经常用的很多方法都是在这里声明的。之前很少关注,突然发现,原来他们在这里,居然有一点点的惊讶的感觉。
先看看NSObject中定义的方法:

  • +(void)load:常用于runtime中方法交换的;
  • -(instancetype)init ; 几乎每天都用的初始化方法;
  • +(instancetype)alloc;几乎每天都用开辟内存空间的方法;
  • -(void)dealloc; 经常使用,检测页面是否销毁。
  • -(id)copy; 浅拷贝
  • -(id)mutableCopy; 深拷贝
  • +(BOOL)conformsToProtocol:(Protocol *)protocol;
  • -(IMP)methodForSelector:(SEL)aSelector;
    ......

原来真是在这里声明的。里面还有很多方法不知道是做什么的,我觉得还是有必要研究一下,这些方法都是干啥用的。

大家没事的时候可以多看看我们常用的类,点进去瞅瞅都有什么方法。我们曾经用过的只是其中很小的一部分,还有很多很多我们从未使用的方法,是否想知道他们都是干啥的。

今天就到这里吧,只是小小的感慨下,突然发现自己还可以这样学习,很开心的一天。

目录
相关文章
C# 继承类中(父类与子类)构造函数的调用顺序
C# 继承类中(父类与子类)构造函数的调用顺序
|
7月前
|
编译器
继承——虚函数
继承——虚函数
|
程序员 C#
C# 类实现接口(Interface) 多态 多继承
C# 类实现接口(Interface) 多态 多继承
|
存储 Cloud Native Linux
C++的纯虚函数使用与接口实现
C++的纯虚函数使用与接口实现
子类到底能不能继承父类的私有属性?
继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;子类通过继承父类的属性的行为,我们称之为继承。Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患:当多个父类定义相同的功能,当功能内容不同的时候,子类对象不确定要运行哪一个,在Java中用另一种形式体现出来,就是接口的多实现。
|
开发者 Python
私有属性的继承特点 | 学习笔记
快速学习 私有属性的继承特点
115 0
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
125 0