React Native js调用Native的小坑
2017-09-13 本文已影响0人
梦魇_4dcd
刚学习RN不久,今天试着在已有的项目中使用。在js当中调用native类PersonCenter提供的方法logout。
js当中调用native方法这个方法里的动作是navigationController的pop,而且已经放到了主线程当中执行。如下图所示。
native当中的方法但是在js当中点击之后,native的方法被调用到了,却没有返回上一页。
在项目中打了断点调试,发现了问题所在。在进入当前controller时,viewDidLoad当中打断点,self的内存地址0x00007fd18c531bb0
在进入这个controller的viewDidLoad中打断点查看self地址当点击js当中的返回时,调用native,此时的self地址发生了变化,说明和之前不一样,而且self的变量都变成了nil。由此可知,js调用Native时,应该是重新创建了一个当前实例用于方法调用。新生成的实例并不包含之前self当中的所有变量(其中当然也包括self.navigationController),因此在调用的时候self.navigationController实际为空,也就达不到返回上一层的效果。
js调用时新生成了一个实例暂时的解决方法是把navigationController定义成一个全局,这样在调用的时候不会出现为空的情况。还请大家斧正。