设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8001|回复: 6
打印 上一主题 下一主题

有关AnyChat for iOS SDK资源释放的问题

[复制链接]

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
跳转到指定楼层
楼主
发表于 2013-7-4 15:35:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用贵公司的AnyChatCoreSDK_iOS_V1.7时遇到问题,我参照demo写了另外一个demo工程,在同一个viewController里面执行

   //anyChat初始化
    [AnyChatPlatform InitSDK:0];
    //连接服务器
    [AnyChatPlatform Connect:@"demo.anychat.cn" : 8906];
    //登陆
    [AnyChatPlatform Login:@"iphone5" : @""];


        这三个方法,之后进入到viewchat的房间

   // 进入房间
    [AnyChatPlatform EnterRoom:1 :@""];


        以上都没问题。
        但是在释放viewController的时候,调用了退出房间、退出登陆、和销毁SDK资源的方法

   // 退出房间
    [AnyChatPlatform LeaveRoom:-1];
    // 注销系统
    [AnyChatPlatform Logout];
    // 释放SDK资源
    [AnyChatPlatform Release];


        执行以上这三个方法,在logout的时候会导致工程崩溃,有时候是第一次正常退出,但是再执行一次上述操作的时候工程崩溃,不知道logout和release的方法是怎样使用才能正确的登出和释放SDK资源呢

        谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
沙发
 楼主| 发表于 2013-7-4 15:44:36 | 只看该作者
您好,请问您在进入房间成功之后,是否有打开本地的摄像头(UserCameraControl)?如果有打开,则需要主动的关闭,关闭摄像头的时候,不要忘记加入【OnLocalVideoRelease】方法:
  1. - (void) OnLocalVideoInit:(id)session
  2. {
  3.     self.localVideoSurface = [AVCaptureVideoPreviewLayer layerWithSession: (AVCaptureSession*)session];
  4.     self.localVideoSurface.frame = CGRectMake(5, 260, 120, 160);
  5.     self.localVideoSurface.videoGravity = AVLayerVideoGravityResizeAspectFill;
  6.    
  7.     [self.view.layer addSublayer: self.localVideoSurface];
  8. }

  9. - (void) OnLocalVideoRelease:(id)sender
  10. {
  11.     if(self.localVideoSurface)
  12.     {
  13.         self.localVideoSurface = nil;
  14.     }
  15. }
复制代码
其中【OnLocalVideoInit】方法会在打开摄像头时由内核主动调用,而【OnLocalVideoRelease】方法会在摄像头销毁时由内核主动调用,如果忽略上面两个方法,程序可以正常编译,但是执行过程中可能会异常。有关OnLocalVideoInit、OnLocalVideoRelease两个方法的详细说明,可参考开发文档《AnyChat for iOS SDK开发手册》的2.3.3节“UIImageView视频显示”。

另外由于摄像头的销毁需要有一定的时间,所以在销毁AnyChat时最好加一点延迟,比如在关闭本地摄像头【UserCameraControl(-1, false)】之后,加500ms左右的延迟再调用离开房间【LeaveRoom】的API会比较合适。

回复 支持 反对

使用道具 举报

12

主题

21

帖子

78

积分

注册会员

Rank: 2

积分
78
板凳
发表于 2013-7-5 09:50:46 | 只看该作者
你好,手动关闭摄像头之后再退出房间,确实是ok了。但是当我第二次进入房间之后,再退出来,就会在 [AnyChatPlatform Release];这地方崩溃,也就是说第一次初始化和释放SDK是没问题的,但是第二次初始化和释放SDK的时候就会在释放的时候崩溃。是不是因为初始化SDK的时候的默认设置,导致不能够再次释放SDK呢?
回复 支持 反对

使用道具 举报

12

主题

21

帖子

78

积分

注册会员

Rank: 2

积分
78
地板
发表于 2013-7-5 09:52:10 | 只看该作者
另外还有个问题,获取对方视频的时候,有时候视频不能充满屏幕,两侧会有黑边;而有时候就是正常充满屏幕的,这是什么原因呢?
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
5#
 楼主| 发表于 2013-7-5 11:30:16 | 只看该作者
龙二 发表于 2013-7-5 09:50
你好,手动关闭摄像头之后再退出房间,确实是ok了。但是当我第二次进入房间之后,再退出来,就会在 [AnyCha ...

您好,整个系统只需要一次初始化(Init)和一次资源释放(Release),所以您在第一次进入房间,然后离开房间(LeaveRoom)之后,是不需要释放SDK资源的(Release),在离开房间(LeaveRoom)之后,可以再次调用进入房间(EnterRoom)的API接口。释放SDK资源(Release)只需要在整个APP退出时才需要调用。
就会在 [AnyChatPlatform Release];这地方崩溃
可以分析一下崩溃之后的堆栈信息,看是什么原因导致的崩溃,然后有针对性的做修改。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
6#
 楼主| 发表于 2013-7-5 11:35:23 | 只看该作者
龙二 发表于 2013-7-5 09:52
另外还有个问题,获取对方视频的时候,有时候视频不能充满屏幕,两侧会有黑边;而有时候就是正常充满屏幕的 ...

您好,这属于摄像头数据采集时设备方向的问题,AnyChat内核会自动根据摄像头采集的方向来对视频作处理,否则如果不处理,有时可能看到其它人的视频是横向的。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
7#
 楼主| 发表于 2013-7-9 17:16:30 | 只看该作者
可参考最新的AnyChat for iOS SDK里面的demo程序:http://bbs.anychat.cn/forum.php? ... &extra=page%3D1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-22 18:50 , Processed in 0.143424 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表