- 博客(386)
- 资源 (51)
- 收藏
- 关注

原创 iOS开发之如何保证控件位置不变,增加触控范围(即frame和bounds的区别)
大佬儿们,我又双叒叕的来了,大家有没有被问到过frame和bounds有什么区别这样的面试题?或者是如何保证Button位置不变,增加点击范围这样的面试题? 什么?没有遇到过!!!哇,如果you know,大佬,大佬,我向你膜拜膜拜,如果you don`t know,那你真的是太幸运了,快来跟我一起揭开frame和bounds若隐若现的面纱吧! 首先,认识一下frame和bounds,两者都是CGRect类型的结构体,包含一个CGPoint(起点)和一个CGSi...
2020-08-20 20:53:36
683
1

原创 iOS开发之lldb调试命令
首先声明一点,这是把之前混合的博客内容,又进行了单独整理,望大家多多包含......开发过程中,我们难免需要断点调试,但是断点调试之后,我们想知道一些对象信息或者堆栈信息,应该怎么办?相信断点调试过的开发者都知道,断点执行后,会在输出框内出现(lldb)这样的字眼,此时,我们就需要相关的调试命令,然后输出我们想要的内容了,现在就开始简单的介绍一下吧!1、po命令print object的缩写,表示显示对象的文本描述,如果对象不存在,则打印为nil;比如:你想知道一个视图包含了哪些子视图,你可
2020-07-11 18:09:55
677

原创 iOS开发之如何优化App的电量
终于有时间整理一下,以前没来的及记录的知识点了,话不多说,开始表演......程序的耗电主要是四个方面:CPU处理,定位,网络,图像;对于这四个方面的优化,我们可以这么做:CPU处理:1、尽可能降低CPU、GPU的功耗,比如:少用定时器;2、优化I/O操作(什么,你不懂什么是I/O操作?简单的来说就是对数据的处理,读写操作),比如:不要频繁的写入小数据,而是积累到一定的数量再写入;读写大量的数据可以使用Dispatch_io,GCD内部已经做了优化;数据量比较大的时候,使用数据库;定
2020-07-09 22:20:46
566

原创 iOS开发之利用IJKPlayer+nginx+rtmp搭建直播的推流和拉流
最近项目中想实现直播的功能,所以研究了一段时间的直播功能,当然也是在别人的基础上不断的学习实现的,所以记录一下,希望对大家有所帮助。直播拉流功能:这里使用了开源的IJKPlayer第三框架,ijkplayer 是一款做视频直播的框架, 基于ffmpeg,是大多数搭建直播平台的首选框架,当然各大云平台都有自己的直播框架,具体大家使用的时候可以自行研究,有问题再留言,我这里不再说明框架的集成和拉流过程
2017-06-29 15:51:23
3404
1

原创 Mac端Git安装,命令使用以及环境搭建(持续更新中......)
MAC上的git配置,配置用户名和用户邮箱,以后每次与Git的交互都会使用该信息。git config --global user.name "your_name" git config --global user.email "your_email@gmail.com"配置信息可以更改,以后想要更改使用上面指令就可以。同时可以使用git config --list指令查看Git的配.........
2017-02-15 15:12:01
8818
1

原创 iOS开发 runtime实现原理以及实际开发中的应用
自己写了一个小例子:有一些相关知识点和博客文章A: 首先现在控制器里面初始化一个对象,然后调用对象的方法:#import "ViewController.h"#import "Message.h"#import "NSObject+AssociatedObject.h"@interface ViewController ()@end@implementation ViewC
2016-07-21 11:49:26
1288

原创 关于颜色色值和对应名称的总结
颜色值定义HTML颜色为红,绿,蓝三色值(RGB)的组合使用一个十六进制表示法(十六进制)。可以给光源之一的最低值是0(十六进制:00)。最高值是255(十六进制:FF)。被指定为十六进制值3对两个数字,一个#符号开始。颜色颜色的十六进制颜色RGB#000000RGB(0,0,0)
2016-04-19 20:40:58
9629
原创 iOS开发之最新Demo上传Github步骤(2025.02.28)
6、第10步与远端库关联在一起,执行命令:git branch --set-upstream-to=origin/main main。7、第11步,也是最后一步,将本地代码推送到远端,执行命令:git push,然后输入SSH Key密码,代码上传成功。正确的命令应该是:git pull origin main --allow-unrelated-histories,此时会显示错误,更新被拒,因为远程包含您在本地没有的工作。新的操作步骤,需要将两篇文章结合进行,从而达到最终的结果。
2025-02-28 11:56:00
444
原创 iOS开发之GCD信号量dispatch_semaphore_t源码分析和使用
iOS中,信号量对于允许多个线程并发访问的资源,它是一个很好的选择。线程访问资源时,首先获取信号量,即创建信号量,然后等待将信号量的值减1。访问资源之后,线程释放信号量,将信号量的值加1。如果信号量的值大于0,则进程可以继续访问资源,并将信号量的值减1;如果信号量的值等于0,则进程会被阻塞,直到信号量的值变为正数。信号量的值可以是0、1或者n,表示可用资源的数量。(2)V(释放)操作:当一个进程或线程完成对共享资源的访问时,它会执行V操作,将信号量的值加1。1、信号量的基本概念和作用。
2025-02-27 18:30:18
372
原创 xcode-select: error: tool ‘xcodebuild‘ requires Xcode, but active developer
打开 .sh 文件所在的终端窗口,执行终端命令:sh 文件名.sh,出现如下错误:
2024-11-13 23:24:29
693
原创 Mac电脑中隐藏文件(即以 . 开头的文件/文件夹)的显示和隐藏的两种方法
同时按下option + command + esc,这时会弹出正在运行的软件进行重启的提示框,选中Finder后点击底部的重新开启按钮,重启Finder。3、 打开可能包含此类文件的文件夹,比如磁盘下的资源库文件夹,git clone下载的代码文件夹等等,都可以检验隐藏文件已显示;如果想再次隐藏文件,只需重复该操作,但将第一个命令中的最后一个单词更改为“ false”,也就是下方这两个命令。2、同时按下 Command + Shift + 点,即 【Command + Shift + . 】;
2024-11-08 11:05:57
4110
原创 ArkTS之npm ERR! Failed at the esbuild@0.21.5 postinstall script.
查看node版本:v20.16.0,再次执行interface2class安装命令,如果没有报错,执行命令:i2c -V,显示版本:v0.1.2,说明已经安装成功,也可以找到相关文件,执行命令:i2c ./message.ets,如果有对应class自动转换,说明interface2class工具成功。查看了node版本:v8.4.0,npm版本:5.3.0,因为错误在Failed at the esbuild@0.21.5 postinstall script,猜测可能是Node.js版本太低导致的。
2024-08-05 22:14:28
999
原创 iOS开发之编译OpenSSL静态库
此时一个架构对应的libssl.a、libcrypto.a静态库和头文件已经生成,此时你需要把对应的架构文件夹,如openssl_arm64,放到一个自定义的文件夹下,当然也可以直接放到源码文件夹的上层文件夹下,然后删除源码文件夹,重新解压下载的OpenSSL源码压缩包,开始编译其他架构下的静态库,从第二步开始执行,一定要注意修改对应的架构名称,一定要注意修改对应的架构名称,一定要注意修改对应的架构名称,重要的事说三遍!
2023-09-13 14:14:43
2485
原创 iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)
符号的类型是以一个字母的形式显示的,小写字母表示这个符号是本地(local)的,而大写字母则表示这个符号是全局的(global,externel)。一般来说,类型有以下几种:T、D、B、U、W。.a/.framework其实是把编译生成的.o文件,打包成一个.a/.framework文件。W,weak的缩写,表示如果其他函数库中也有对这个符号的定义,则其他符号的定义可以覆盖这个定义;小写表示是本地符号,大写表示全局符号(external);U表示没有定义的,在这个库里面使用了,但是在其他库中定义的符号;
2023-08-24 14:25:10
3245
原创 iOS开发之layer.frame,layer.anchorPoint,layer.position对frame的影响
iOS开发之layer.frame,layer.anchorPoint,layer.position对frame的影响
2023-01-06 18:07:57
777
原创 iOS开发之iOS15.6之后拉流LFLiveKit,画面模糊及16.1马赛克问题
iOS开发之iOS15.6之后拉流LFLiveKit,画面模糊及16.1马赛克问题
2022-12-06 14:58:25
1457
原创 iOS开发之自定义的framework添加第三方framework,lipo和ar命令看.o文件
由于需要将之前生成的mediapipe.framework添加到自己的framework中,但是很奇怪用普通的拖拽方式添加,项目工程在加载运行自己的framework时,总是找不到mediapipe.framework中的头文件,而只编译自己的framework时,也是可以通过的,或者直接将mediapipe.framework添加到项目工程中,调用库中的方法也可以使用,所以在此记录一下遇到这种情况时,怎么处理。
2022-11-17 17:43:08
2575
1
原创 iOS开发之机器学习框架MediaPipe(5)
研究了这么长时间,终于可以写一下如何生成想要的功能包framework,然后放入自己的项目中了。
2022-11-11 14:55:53
2545
9
原创 iOS开发之Undefined symbol:_OBJC_CLASS_$_****
更新了Xcode14.0.1以后,项目突然曝出了此问题Undefined symbol:_OBJC_CLASS_$_****,因此记录一下,解决此问题的步骤
2022-10-27 14:42:56
20752
原创 iOS开发之机器学习框架MediaPipe(3)
上次Tulsi.app终于安装成功了,现在就是要通过Tulsi来运行MediaPipe中的机器学习的Demo在Xcode上运行起来,废话不多说,直接上手开始吧~
2022-10-26 11:34:26
1280
3
原创 iOS开发之机器学习框架MediaPipe(2)
上述操作完成后,接下来就是下载安装Tulsi.app、配置运行MediaPipe项目的操作。在这个过程中也是遇到了匪夷所思的问题,接着开始。
2022-10-24 20:54:11
1302
原创 iOS开发之机器学习框架MediaPipe(1)
MediaPipe是谷歌开源的机器学习框架,用于处理视频、音频等时间序列数据。MediaPipe Solutions提供了16个Solutions: 人脸检测、Face Mesh(面部网格)、虹膜、手势、姿态、人体、人物分割、头发分割、目标检测、Box Tracking、Instant Motion Tracking、3D目标检测、特征匹配等。
2022-10-13 21:03:05
1746
2
原创 iOS开发之The code signature version is no longer supported.
遇见此问题,解决方法一:Build Setting -> Other Code Signing Flags 添加 --generate-entitlement-der解决方法二:Xcode > Target > General 找到 "Embedded Framework, Libraries and Embedded Content" Set all frameworks in theEmbeddedfield to "Do not Embed"我的就是使用方法..
2022-05-25 16:12:35
843
原创 WebRTC开发之iOS15.4快速晃动,远端观看卡顿掉帧问题
前两周刚刚更新了iOS15.4的系统,然后就发现了一个奇怪的问题,在iOS15.4的手机上安装音视频Demo,快速晃动时,远端看到的画面会卡顿,并且掉帧、帧率下降、不断变化,然而在其他系统手机上,却没有问题,所以是为什么?1、难道是iOS15.4系统的采集修改,所以丢掉了部分帧?2、难道是iOS15.4系统的硬编码修改,所以丢掉了部分帧?3、难道是iOS15.4系统与WebRTC不匹配,所以WebRTC丢掉了部分帧?根据这些猜想和疑问,在采集和编码处分别添加输出语句,测试多次发现:设置帧率1
2022-03-30 18:32:45
1896
1
原创 WebRTC开发之webrtc/depot_tools/gn: line 8: exec: python: not found
最近更新了Mac系统macOS Monterey和最新的Xcode13.3,然后发现webrtc无法编译了,出现了如下问题:于是根据图片问题提示,打开gn文件,发现写的是“python”,记得以前Mac自带python2.7,文件代码写的没问题啊,怎么回事?于是打开终端查看python,发现竟然找不到,查看了Mac最新的系统介绍,发现Mac竟然把自带的python2.7改成了自带python3了,哇,好坑......首先,我先把gn代码改成了python3,终端输入gn,发现可以运行,.
2022-03-21 14:13:30
2011
1
原创 《蛙》杂记------莫言
“父亲兴奋地说:好,是头小母牛!姑姑气哄哄地说:真是奇怪,女人生了女孩,男人就耷拉脸;牛生了小母牛,男人就咧嘴乐!父亲说:小母牛长大了可以繁殖小牛啊!姑姑说:人呢?小女孩长大了不也可以生小孩儿吗?父亲说:那可不一样。姑姑说:有什么不一样!” ------摘自第一部分 “我想起母亲生前不止一次地...
2022-03-02 18:08:48
601
原创 iOS开发之strip处理framework的调试符号
iOS安全,符号表中有些符号是必须的,但是很多符号都是可以去掉的,符号表中可以看到很多暴露的类名、函数名,让攻击者可以看到有哪些关键的逻辑,所以要剥去、除去不必要的符号表,这样也可以将framework包进行瘦身,删除framework中的调试符号,首先 cd 到framework文件夹下,然后执行:strip -S -X (包名)...
2021-12-17 17:54:48
2695
原创 Python基础入门之二进制的负数
刚刚介绍了位运算符,里面涉及到了二进制的运算,出现了a = 60,~a = 1100 0011 = -61的计算,所以这里记录一下二进制的负数表示和计算。二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。在二进制码
2021-12-12 22:26:04
5002
1
原创 Python基础入门之位运算符
位运算符是将数字转换成二进制的形式,然后进行计算。例如:a = 60,b = 13,a & b = 12,这是因为a、b转换成二进制为a = 0011 1100,b = 0000 1101,a & b = 0000 1100 = 12,位运算符包含以下几种:位运算符 含义 实例:a = 60 = 0011 1100, b = 13 = 0000 1101 & 与:参与运算的两个值,如果两个...
2021-12-12 21:07:13
1221
原创 《新参者-加贺恭一郎》、《麦田里的守望者》杂记
《新参者-加贺恭一郎》杂记---东野圭吾、著《麦田里的守望者》杂记-----杰罗姆·大卫·塞林格、著
2021-11-22 11:51:33
490
1
原创 WebRTC音视频之噪音消除功能
WebRTC对于iOS和Android的音频处理,是有很大的不同的,WebRTC基本上是使用的iOS自身的音频降噪、环境音处理、人声增益处理,因为WebRTC认为iOS的音频处理已经满足相对理想的效果,所以在算法处理上进行了iOS和Android的区分。...
2021-10-26 20:03:44
3627
1
原创 WebRTC音视频之美颜开启后小流闪烁问题
美颜开启后,打开双流,远端查看小流时,小流闪烁问题项目中使用的是GPUImage进行的美颜处理,添加了美白、磨皮、亮光,但是当开启美颜效果后,如果只使用大流进行查看视频,视频美颜正常,画面正常,但是如果使用小流查看美颜画面,视频画面中会偶尔闪烁黑块,类似于大块马赛克效果,然后进行分析,如果将美颜效果关闭,小流视频画面正常,视频处理流程:将采集到的视频画面,进行YUV或者RGB美颜渲染处理,然后将画面帧传递给WebRTC进行编码,最后上行给服务器,下发给远端观看。猜测,既然关闭美颜画面,小流画面没有问
2021-10-13 01:00:00
719
原创 WebRTC音视频之优化音频造成的内存增长和增加大小流
1、关于多人通话内存不断增长的问题在旧版本iPhone上(比如:iPhone6、6s、7),四人及以上通话,造成内存不断增长,使用Instrument工具分析,是因为audioFrame创建过快,再加上人数过多以后,CPU处理能力跟不上,释放audioFrame对象逐渐变慢,造成内存逐步上涨,后来查看了线程等级和使用位置,进行了调整,将原来的AudioEncoder线程的等级从NORMAL提高到了HIGH,视图如下:其实也可以通过修改其他两个关于video和stream的线程等级达到效果,但是.
2021-10-11 14:13:57
1611
原创 常用知识之CMSampleBufferRef系
//// ViewController.m// Demo//// Created by on 2021/9/28.//#import "ViewController.h"#import <CoreMedia/CoreMedia.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; .
2021-09-29 11:01:07
2600
iOS导航头像缩放Demo
2016-08-08
MVVM、图片选择封装(UICollectionView)、富文本封装(NSAttributedString)、引导动画(Animation)四个知识点Demo
2016-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人