React-Native使用小发现

来源:互联网 发布:opencv 分水岭算法 编辑:程序博客网 时间:2024/06/05 15:04

参考:http://blog.csdn.net/pz789as/article/details/52823985


1、今天接入驰声语音库,发现了一个解决不了的警告:

RCTBridge required dispatch_sync to load xxxxx. This may lead to deadlocks

Required dispatch_sync to load constants for xxxxx. This may lead to deadlocks

后面发现是因为模拟器接入浏览器调试才会出现,如果不适用浏览器调试,就不会弹出这个警告。


2、录音和播放的错误,这两个一起使用的时候,录音启动失败,调用AudioQueueStart 返回-50,这是因为AVAudioSession重复了,需要重新设置。

在调用AudioQueueStart之前,调用下面的程序就可以解决了。

  AVAudioSession * session = [AVAudioSession sharedInstance];  if (!session) printf("ERROR INITIALIZING AUDIO SESSION! \n");  else{    NSError* nsError;    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&nsError];    if (nsError) {      NSLog(@"couldn't set audio category!");    }    [session setActive:YES error:&nsError];    if (nsError) {      NSLog(@"AudioSession setActive = YES failed");    }  }

3、RCT_REMAP_METHOD的使用,要注意如果是两个函数名不同,但是参数是一样的,就会出错:

RCT_REMAP_METHOD(getPcmCurrentTime,                 resolver:(RCTPromiseResolveBlock)resolve                 rejecter:(RCTPromiseRejectBlock)reject){  resolve([[NSNumber alloc]initWithDouble:[_pcmPlayer getCurrentTime]]);}RCT_REMAP_METHOD(initPcm,                 resolver:(RCTPromiseResolveBlock)resolve                 rejecter:(RCTPromiseRejectBlock)reject){  resolve([[NSNumber alloc]initWithDouble:[_pcmPlayer getCurrentTime]]);}
上面这样不行,以下情况可以使用:

只要是参数数量不同,或者参数数量一样,参数名字不一样就可以。

与参数类型无关,类型不同,其他一样是不行的。


4、关于字符串:平时字符串拼接时直接使用+或者format之类的,最近发现有个很好的方法,使用“`${}`”表达式。

如: 

var w = 100;

var text = `based width is: ${w}`;

输出得到的结果就是 "based width is: 100"


5、关于RN原生模块的命名问题,2016年11月14号在做一个twitter登陆时,自定了一个原生模块,然后命名为RCTTwitter,其他都按照官网的设置,然后在JS端调用时,无法检测到该模块。在试了一天,排查所有错误后,自己重新建了一个不带RCT前缀的原生模块类,结果导出之后可以找到!~~

由此个人推断:在创建自定义原生模块时,命名一定要注意,不能带RCT前缀。RCT前缀适用于原生View,搭配RCT***Manager一起使用,可能是RN内部设置。


6、在实际开发中,IOS使用模拟器调试时,经常按cmd+R键进行重新load操作。但是有时候按的不对时,就会按到cmd+T键,如果在不知情的情况下,你将会看到模拟器运行起来特别的卡顿,这是为什么呢?经过我自己的排查,终于发现问题所在!原来就是按到cmd+T快捷键了,那么这个快捷键是做什么用的呢?我在模拟器的菜单栏里面就找到了这么一个说明:在Debug选项中,第一个就是cmd+T快捷键,“Slow Animations”,从字面意思应该是缓慢的动画,由此就知道了为什么会变慢了~你只要再按一次cmd+T,或者通过菜单栏把那一项勾掉即可!!





0 0