最近找工作順便復(fù)習(xí)一下基礎(chǔ)知識,發(fā)現(xiàn)NSError都是用雙重指針來傳遞,而其他對象都是*難道有什么不同嗎,仔細(xì)琢磨一下恍然大悟。
第一得明白NSError *error;這個error是在棧中存放的,棧中數(shù)據(jù)作為形參會進(jìn)行復(fù)制。
第二error一般都是底層拋出的,不是我們來創(chuàng)建的。
好好思考一下就會知道了,如果是以*作為形參,系統(tǒng)會進(jìn)行復(fù)制得到一個新的指針,在方法里面對這個error的賦值是不能作用到外面那個error的。因此外層的還是一個指向nil的指針。如果傳遞的是一個error這個指針的地址,也就是指向指針的指針,方法里面進(jìn)行取值操作就可以拿到外層那個error了。
而其他對象我們都是對其指向的內(nèi)容進(jìn)行操作而不是賦值操作,形參賦值其指向的內(nèi)容還是同一份。
在衍生一下,如果你一個對象的創(chuàng)建是通過系統(tǒng)來初始化的,這個對象作為參數(shù)的時候都需要用雙重指針來進(jìn)行復(fù)制。
iOS NSerror 用雙重指針理解
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...