1. NSClassFromString
這個(gè)方法判斷類是否存在舆床,如果存在就動(dòng)態(tài)加載的,不存為就返回一個(gè)空對(duì)象;
id myObj = [[NSClassFromString(@"MyClass") alloc] init];
正常情況下等價(jià)于:id myObj = [[MyClass alloc] init];
優(yōu)點(diǎn):
1, 弱化連接组橄,因此并不會(huì)把沒(méi)有的Framework也link到程序中率拒。
2贸弥,不需要使用import瓢省,因?yàn)轭愂莿?dòng)態(tài)加載的弄息,只要存在就可以加載。因此如果你的toolchain中沒(méi)有某個(gè)類的頭文件定義勤婚,而你確信這個(gè)類是可以用的摹量,那么也可以用這種方法。
2. NSSelectorFromString
這個(gè)方法是上個(gè)方法的補(bǔ)充馒胆,也是動(dòng)態(tài)加載實(shí)例方法缨称。
SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意這個(gè)冒號(hào),說(shuō)明方法帶有參數(shù)
if([object respondsToSelector:sel]) {
[object performSelector:sel withObject:color]; //注意如果有兩個(gè)參數(shù),使用兩個(gè)withObject:參數(shù);
}
3. isKindOfClass
isKindOfClass 我們也可以使用isKindOfClass來(lái)檢查一個(gè)對(duì)象是否是一個(gè)類的成員
4. isMemberOfClass
isMemberOfClass方法是來(lái)確定對(duì)象是否是某一個(gè)類的成員
5.
initWithCoder和initWithFrame的區(qū)別 initWithCoder是一個(gè)類在IB中創(chuàng)建但在xocdde中被實(shí)例化時(shí)被調(diào)用的.比如,通過(guò)IB創(chuàng)建一個(gè)controller的nib文件,然后在xocde中通過(guò)initWithNibName來(lái)實(shí)例化這個(gè)controller,那么這個(gè)controller的initWithCoder會(huì)被調(diào)用.
initWithFrame是由用戶創(chuàng)建的UIView子類,實(shí)例時(shí)被調(diào)用