使用信号量解决多线程同步问题
临时帮忙去做了一期千帆小视频的SDK,大致的流程是这样的 : 录制小视频公开了两个串行队列,一个是处理摄像头回调的,一个是处理麦克风数据回调的,当用户按下录制按钮时开始采集音视频,通过代理方法拿到一帧帧的数据,当检测到音频1时就创建一个编码器,开始编码,用户松手后停止编码。 IMP 看代码之前需要说明下,转码器的创建、开始/停止编码要在同一个线程中,这些操作是不耗时的,为了简单就在主线...
临时帮忙去做了一期千帆小视频的SDK,大致的流程是这样的 : 录制小视频公开了两个串行队列,一个是处理摄像头回调的,一个是处理麦克风数据回调的,当用户按下录制按钮时开始采集音视频,通过代理方法拿到一帧帧的数据,当检测到音频1时就创建一个编码器,开始编码,用户松手后停止编码。 IMP 看代码之前需要说明下,转码器的创建、开始/停止编码要在同一个线程中,这些操作是不耗时的,为了简单就在主线...
在开发斗地主的语音房时,显示当前音量用的C语言实现,会分配buffer地址,最后释放buffer,使用了malloc、free和memmove等方法。 三个方法的具体使用如下: malloc void *malloc(long NumBytes); 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 失败的原因有多种,比如说空间...
一般情况下,当前页面有滚动视图(UIScrollView或者UIScrollView的子类)时,触摸状态栏,视图会自动滚动的最顶端。如果页面有多个滚动视图,且是iOS10.0以下的系统,你会发现触摸状态栏没有反应了,回到顶部功能失效了。目前iOS10.0或以上系统没发现存在这个问题。 解决方案 经研究发现,UIScrollView有个scrollsToTop属性,这个属性就是控制滚动到...
在开发彩蛋红包时,有两个发送红包的按钮 “+”和 “-”。这两个按钮是两张图片。在设置图片时,发现其不能很好的适配6 plus机型,如下图所示。于是我尝试了设置图片的contentMode: [minus.imageView setContentMode:UIViewContentModeScaleToFill]; 然而并没有什么卵用。。。图片还是不能填充整个按钮,后来查阅资料...
在项目中要实现一个动画,想让view从底部展开,经过搜索,知道了CALayer的anchorPoint可以控制动画的固定点,遂直接写了如下代码: self.redView.layer.anchorPoint = CGPointMake(0.5, 1.0); self.redView.transform = CGAffineTransformMakeScale(1, 0); [UIView...
我的测试机升级到 iOS11 beta10 之后,发现了严重的问题,我的手机直接卡死了,只有强制关机!这是我使用 Xcode 调试抓到的日志: Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState] PID: 2015, TID: 196235, Thread...
该分类由千帆 SDK 团队共同维护,主要用来记录 SDK 开发过程中遇到的各种问题以及解决方案。写成博客记录是为了供组内其他成员学习参考,这样知识才能像血液一样在整个团队里不停循环,为我们注入更多的新鲜血液! 提升团队整体战斗力,拉低技术差距。 我为人人,人人为我。 Hello,SDK issues
9月12号苹果会发布新一代设备 — iPhone8,搭载 iOS 11 是肯定的,现在测试已经提了一些 iOS11上的问题了,因此我决定把我的设备也升级到 iOS 11,用来解 bug,适配等工作。 安装途径 以下两种方式都可行,各有优缺,自行选择吧: OTA升级 到开发者中心,去下载 OTA 升级的一个描述文件: 这个描述文件需要装到...
截止目前,SDK的打包,已经代码审查都是通过脚本完成的,利用脚本可以轻松的帮我们搞定那些重复的枯燥工作,可以节省宝贵的时间又能避免修改配置环境引发的错误。虽然有了这些这些脚本了,不过还是得人工去执行,不够省心啊,作为一个追求极致又很懒的人,是不能忍的,于是就搞了个定时任务,每天下班后我们只需要提交下代码,到规定的时间后,打包机器(不关机)就自动去执行打包脚本,为我们打包,代码审查! 简介 ...
有的时候我们需要针对特定的机型或者系统版本做一些特殊的处理,使得我们的程序能够正常的运行,这时就要去判断设备型号、系统版本了,获取这些信息本身并没有什么技术含量,只是比较零碎,因此为了查阅方便,整理了一份代码出来,用的时候直接copy即可。 设备信息 使用 uname 方法可以获取设备的硬件信息,其中就包括型号,我们可以根据型号具体的判断一个设备,比如 iPhone5s 的型号是 ‘i...