iOS NSerror 用雙重指針理解

最近找工作順便復(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ù)制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,014評論 0 7
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,217評論 30 472
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,762評論 0 4
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,479評論 3 44
  • 深刻記得,他生前我為他做的最后一道菜是青椒魷魚。盡管他咀嚼的很慢很慢,不過在一旁靜看他吃的我能感受出他對這份美食的...
    白云伊處閱讀 211評論 0 0