剛學(xué)習(xí)RN不久逃默,今天試著在已有的項(xiàng)目中使用。在js當(dāng)中調(diào)用native類PersonCenter提供的方法logout传蹈。
這個方法里的動作是navigationController的pop谈跛,而且已經(jīng)放到了主線程當(dāng)中執(zhí)行箫措。如下圖所示。
但是在js當(dāng)中點(diǎn)擊之后哎迄,native的方法被調(diào)用到了回右,卻沒有返回上一頁。
在項(xiàng)目中打了斷點(diǎn)調(diào)試漱挚,發(fā)現(xiàn)了問題所在翔烁。在進(jìn)入當(dāng)前controller時,viewDidLoad當(dāng)中打斷點(diǎn)旨涝,self的內(nèi)存地址0x00007fd18c531bb0
當(dāng)點(diǎn)擊js當(dāng)中的返回時蹬屹,調(diào)用native,此時的self地址發(fā)生了變化白华,說明和之前不一樣哩治,而且self的變量都變成了nil。由此可知衬鱼,js調(diào)用Native時业筏,應(yīng)該是重新創(chuàng)建了一個當(dāng)前實(shí)例用于方法調(diào)用。新生成的實(shí)例并不包含之前self當(dāng)中的所有變量(其中當(dāng)然也包括self.navigationController)鸟赫,因此在調(diào)用的時候self.navigationController實(shí)際為空蒜胖,也就達(dá)不到返回上一層的效果消别。
暫時的解決方法是把navigationController定義成一個全局,這樣在調(diào)用的時候不會出現(xiàn)為空的情況台谢。還請大家斧正寻狂。