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;
    ......

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值