NSObject类了解

2018-02-27 11:11:42来源:https://www.jianshu.com/p/d6b847419087作者:睡醒的妞妞人点击

分享


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





image.png

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





image.png

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


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

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


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


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








最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台