NSClassFromString是一個(gè)很有用的東西未斑,尤其在進(jìn)行iPhone toolchain的開發(fā)上。
正常來說惠况,
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];
和
id myObj = [[MySpecialClass alloc] init];
是一樣的壮吩。但是,如果你的程序中并不存在MySpecialClass這個(gè)類魄懂,下面的寫法會(huì)出錯(cuò),而上面的寫法只是返回一個(gè)空對(duì)象而已闯第。
因此市栗,在某些情況下,可以使用NSClassFromString來進(jìn)行你不確定的類的初始化咳短。
比如在iPhone中填帽,NSTask可能就會(huì)出現(xiàn)這種情況,所以在你需要使用NSTask時(shí)咙好,最好使用:
[[NSClassFromString(@"NSTask") .....]]
而不要直接使用[NSTask ...]這種寫法篡腌。
NSClassFromString的好處是:
1 弱化連接,因此并不會(huì)把沒有的Framework也link到程序中勾效。
2 不需要使用import嘹悼,因?yàn)轭愂莿?dòng)態(tài)加載的,只要存在就可以加載层宫。因此如果你的toolchain中沒有某個(gè)類的頭文件定義杨伙,而你確信這個(gè)類是可以用的,那么也可以用這種方法萌腿。