今天看一本書桑涎,偶然間看到關(guān)于繼承的那一章。上面有一句話是這么說的:在OC中兼贡,允許定義自己的根類攻冷,但通常不這么做,而是希望利用現(xiàn)有的類遍希。因此等曼,我們所定義的類都是屬于NSObject根類的派生類。
看到這里,肯定有人說禁谦,這不都是廢話嗎胁黑?大家都知道啊州泊!可是丧蘸,我就想,既然蘋果允許自己定義根類遥皂,那么怎么定義呢力喷?我嘗試用xcode進(jìn)行定義一個(gè)不繼承自任何類的基類,并沒有成功演训。subclass那一欄必須選擇弟孟。
然后,我又想样悟,我自己不能定義基類晚凿,那么NSObject是個(gè)基類遏匆,它是繼承自什么呢走芋?于是點(diǎn)開xcode漂问,進(jìn)入NSObject類中查看究竟。
image.png
NSObject類沒有繼承的父類震糖,而是有一個(gè)協(xié)議录肯,查看這個(gè)協(xié)議。
image.png
才發(fā)現(xiàn)试伙,原來經(jīng)常用的很多方法都是在這里聲明的嘁信。之前很少關(guān)注,突然發(fā)現(xiàn)疏叨,原來他們在這里潘靖,居然有一點(diǎn)點(diǎn)的驚訝的感覺。
先看看NSObject中定義的方法:
- +(void)load:常用于runtime中方法交換的蚤蔓;
- -(instancetype)init ; 幾乎每天都用的初始化方法卦溢;
- +(instancetype)alloc;幾乎每天都用開辟內(nèi)存空間的方法秀又;
- -(void)dealloc; 經(jīng)常使用单寂,檢測頁面是否銷毀。
- -(id)copy; 淺拷貝
- -(id)mutableCopy; 深拷貝
- +(BOOL)conformsToProtocol:(Protocol *)protocol吐辙;
- -(IMP)methodForSelector:(SEL)aSelector宣决;
......
原來真是在這里聲明的。里面還有很多方法不知道是做什么的昏苏,我覺得還是有必要研究一下尊沸,這些方法都是干啥用的威沫。
大家沒事的時(shí)候可以多看看我們常用的類,點(diǎn)進(jìn)去瞅瞅都有什么方法洼专。我們曾經(jīng)用過的只是其中很小的一部分棒掠,還有很多很多我們從未使用的方法,是否想知道他們都是干啥的屁商。
今天就到這里吧烟很,只是小小的感慨下,突然發(fā)現(xiàn)自己還可以這樣學(xué)習(xí)蜡镶,很開心的一天雾袱。