201705關(guān)于平時開發(fā)過程中遇到的一些小知識小問題

一,關(guān)于NSClassFormString:

NSClassFromString是一個很有用的東西,尤其在進行iPhone toolchain的開發(fā)上。

正常來說,

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

id myObj = [[MySpecialClass alloc] init];

是一樣的。但是,如果你的程序中并不存在MySpecialClass這個類,下面的寫法會出錯,而上面的寫法只是返回一個空對象而已。

因此,在某些情況下,可以使用NSClassFromString來進行你不確定的類的初始化。

比如在iPhone中,NSTask可能就會出現(xiàn)這種情況,所以在你需要使用NSTask時,最好使用:

[[NSClassFromString(@"NSTask") .....]]

而不要直接使用[NSTask ...]這種寫法。

NSClassFromString的好處是:

1 弱化連接,因此并不會把沒有的Framework也link到程序中。

2 不需要使用import,因為類是動態(tài)加載的,只要存在就可以加載。因此如果你的toolchain中沒有某個類的頭文件定義,而你確信這個類是可以用的,那么也可以用這種方法。


例如:Classclass =NSClassFromString(className);//NSClassFromString在某些特殊的情況下,可以進行一些你不確定的類,的定義。

if(class) {

UIViewController*ctrl = class.new;

ctrl.title=_titles[indexPath.row];

[self.navigationControllerpushViewController:ctrlanimated:YES];



二、關(guān)于(lldb) po text

error: Couldn't materialize: couldn't get the value of variable text: variable not available

error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression

解決方案

其實這是由于你工程編譯策略的問題,需要將 release 下的變異策略修改:

Project > App target > Build Settings > Optimization Level > Release 將選項 fastest,Smallest[-Os]改為 None .

在 debug 下不會發(fā)生此錯誤,是因為 debug 下的變異策略默認為 None



三、關(guān)于編譯錯誤:Apple Mach-O Linker Error,不知道大家有沒有試過,編譯的時候,特別是手動拖拽了第三方的東西的時候,一編譯就出現(xiàn)這種情況



這種錯誤,很奇怪,就是你點擊的話,對應(yīng)的錯誤位置不會給你點出來。那么,這種情況就應(yīng)該是Link Binary With Libraries里面沒有添加相應(yīng)的系統(tǒng)依賴庫,所以,添加上去就解決這種問題啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容