轉載陳斌彬的技術博客
NSClassFromString
是一個很有用的東西凝果,尤其在進行 iPhone toolchain 的開發(fā)上搓劫。
正常來說
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];
和
id myObj = [[MySpecialClass alloc] init];
是一樣的塑荒。但是党瓮,如果你的程序中并不存在 MySpecialClass
這個類,下面的寫法會出錯姊舵,而上面的寫法只是返回一個空對象而已晰绎。
比如在 iPhone 中,NSTask
可能就會出現(xiàn)這種情況蠢莺,所以在你需要使用 NSTask
時,最好使用:
[[NSClassFromString(@"NSTask") .....]]
而不要直接使用[NSTask ...]
這種寫法
NSClassFromString 的好處是:
- 弱化連接零如,因此并不會把沒有的 Framework 也 link 到程序中躏将。
- 不需要使用 import,因為類是動態(tài)加載的考蕾,只要存在就可以加載祸憋。因此如果你的 toolchain 中沒有某個類的頭文件定義,而你確信這個類是可以用的肖卧,那么也可以用這種方法