集成讯飞听写iOS sdk到unity遇到的问题:weak成员和strong成员
2015-10-22 13:12
676 查看
在unity里集成讯飞语音听写iOS sdk的过程中,遇到一个问题,官方的demo中可以将多次onResults回调返回的结果累积拼接起来组成一个完整的结果,而我集成过来以后就不能累积了,只拿到最后一次返回的结果。
但是代码是一样的,怎么会结果不一样呢。最后发现:
原demo里用的是一个UITextView来缓存结果的:
@property (weak, nonatomic) IBOutlet UITextView *textView;
而我移过来以后由于不能用iOS原生UI,要改用unity的UI,所以将此textView改成了
@property (weak, nonatomic) NSString *textView_text;
问题就出在weak上面,原demo里的textView由于在别处被其它成员强引用了(具体地,是被@property (nonatomic, strong) PopupView *popUpView这个成员强引用了),所以定义成weak也不会被释放。而我将其改成textView_text后(同时我也将popUpView改成了@property (nonatomic, strong) NSString *popUpView_text),没有对象对它进行强引用了,所以它定义成weak就会导致被释放。
所以应该改成:
@property (strong, nonatomic) NSString *textView_text;
就对了。
----
讯飞demo中的isr是听写功能,isr是iFlySpeechRecognizer的简称。
但是代码是一样的,怎么会结果不一样呢。最后发现:
原demo里用的是一个UITextView来缓存结果的:
@property (weak, nonatomic) IBOutlet UITextView *textView;
而我移过来以后由于不能用iOS原生UI,要改用unity的UI,所以将此textView改成了
@property (weak, nonatomic) NSString *textView_text;
问题就出在weak上面,原demo里的textView由于在别处被其它成员强引用了(具体地,是被@property (nonatomic, strong) PopupView *popUpView这个成员强引用了),所以定义成weak也不会被释放。而我将其改成textView_text后(同时我也将popUpView改成了@property (nonatomic, strong) NSString *popUpView_text),没有对象对它进行强引用了,所以它定义成weak就会导致被释放。
所以应该改成:
@property (strong, nonatomic) NSString *textView_text;
就对了。
----
讯飞demo中的isr是听写功能,isr是iFlySpeechRecognizer的简称。
相关文章推荐
- 转场不销毁物体 esc退出,图片挡住按钮怎么办,Canvas Group组,blocks Raycasts
- Unity3D系列2:Input.GetButtonDown没有正确响应
- Spine输出资源一键入Unity3D工具代码
- Unity调试函数执行时间
- 解决Unity5+Vuforia+Network本地联机发布到Android上白屏的问题
- Unity获取object所有属性的一个方法,一些界面上没有开放的属性可以用该方法编辑
- ZXing二维码生成在Unity3D中出错,数组超出界限的解决办法
- [Unity3D学习]3D数学基础之坐标系
- Unity3D游戏开发初探—2.初步了解3D模型基础
- 【Unity Shaders】Surface Shader 概述
- 【笨木头Unity】入门之旅003:HelloWorld
- 【笨木头Unity】入门之旅002:不谈对象,咱们谈组件
- Unity3D优化
- unity3d Vector3.Dot Cross Angle 用法记录
- unity3d 通过代码建立曲面
- UNITY 5.2 SystemInfo类
- unity 脚本编译顺序
- unity 脚本编译顺序
- Unity编辑器下获取动画的根运动状态并修改
- Unity3d 烘培lightingmap 注意的2点.