零碎知识点
文章平均质量分 71
想名真难
这个作者很懒,什么都没留下…
展开
-
ios 计算label宽度方法效率对比
ios 计算label宽度方法效率对比sizeToFit PK boundingRectWithSize原创 2022-12-16 21:55:10 · 1291 阅读 · 0 评论 -
iOS监听日期变化, 跨天/手动修改系统时间
- (void)applicationSignificantTimeChange:(UIApplication *)application { NSLog(@"applicationSignificantTimeChange");}- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(...原创 2022-04-27 11:25:16 · 1804 阅读 · 0 评论 -
iOS 使用宏打印变量名字
今天看代码发现一个宏, 竟然还是有点意思的. 这个宏可以把入参的变量名称打印出来,比如入参一个string类型的字符串, 变量名叫 studentName = @"小明", 通过这个宏可以打印出studentName.#define HTLog(_var) \{ \ NSString *name = @#_var; \ NSLog(@"变量名:%@; 变量值:%@; 变量地址:%p; 变量类型:%@", name, _var, _var, [_var class]); \}.转载 2022-04-13 23:16:53 · 408 阅读 · 0 评论 -
iOS端屏幕录制ReplayKit
ReplayKit是苹果在iOS9上面提供的一个框架,可以让用户录制自己APP内的视频,不支持跨app录制,并且可以同时开启麦克风,录制麦克风采集的声音。库的特性说明 要使用ReplayKit需要在工程的Build Phase的Link binary with libraries中加入ReplayKit.framework. 目前这个库只支持真机允许,不支持模拟器。 系统版本高于iOS9。 这个库支持app内录屏,但不支持录avplayer播放的视频,这个可能是为了保原创 2022-02-06 20:28:08 · 4248 阅读 · 0 评论 -
xcode将警告当做错误处理
xcode 中有时有些我们认为错误却被当做警告处理,那么问题来了,怎么才能让警告和错误一样,终止编译呢?在Build Settings 中 Other C Flags 中添加相应的宏即可 例如我们需要将 -Wformat-security 变成错误 只需添加 -Werror=format-security 即可那么 -Wformat-security 怎么来的呢,当然不需要死记硬背那么如果想要忽略某个警告呢只需要在Other Warning Flags 中添加就行-Wno...转载 2021-10-28 17:35:15 · 909 阅读 · 0 评论 -
FBKVOController 源码使用及解读
源码地址: KVOController, 概述FBKVOController 做了什么 FBKVOController 使用姿势 FBKVOController 源码解析 FBKVOController 设计思路总结 FBKVOController 其它收获FBKVOController 做了什么?简单来说,Facebook 开源的这套代码, 很少, 只有2个类+1个类别,主要是对我们经常使用的 KVO 机制进行了额外的一层封装。其中最亮眼的特色是提供了一个 block 回调让我们进行处.转载 2021-09-20 17:12:18 · 649 阅读 · 1 评论 -
__VA_ARGS__和va_start作用, 关于log
__VA_ARGS__ 是一个可变参数的宏,经常用来对系统的NSLog进行处理, 这个可变参数的宏是新的C99规范中新增的。实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。##__VA_ARGS__ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错一般这个用在调试信息上多一点比如iOS上的DDLog框架就用了这个,...原创 2021-07-31 10:34:03 · 808 阅读 · 0 评论 -
使用NS_UNAVAILABLE(不可用) NS_DESIGNATED_INITIALIZER(指定构造器) 关键自定义类的初始化方法
NS_UNAVAILABLE标记方法不可用。Xcode不会自动补全,代码中如果调用此方法,会编译报错。但是runtime依然可以调用到此方法。用处: 要删除,修改此方法, 可以先标记为不可用, 然后在依次修改, 改完后,在取消NS_UNAVAILABLE例如只允许调用类的初始化方法- (instancetype)initWithName:(NSString *)name;+ (instancetype)new NS_UNAVAILABLE;//下面3个效果等同- (instan转载 2021-06-10 20:34:23 · 610 阅读 · 0 评论 -
zsh命令自动补全插件
zsh-autosuggestions自动补全插件下载该插件到.oh-my-zsh的插件目录git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions编辑.zshrc文件在.zshrc文件中添加这行 source ~/zsh-autosuggestions/zsh-autosuggestions.zsh找到plugins=(git)这一行,如果没有添加.转载 2021-03-05 11:12:42 · 3695 阅读 · 4 评论 -
fir, 蒲公英分发iOSAPP的方法(使用itms-services协议), 如何下载fir包到电脑
fir , 蒲公英等内测平台可以通过扫描二维码进行下载app, 以及两个应用合并为一个, 很好奇他们是怎么做的, 今天就来探究下。其实分发平台很多是获取你上传的app,会生成两个文件一个是plist文件,通过他我们可以下载对应的ipa文件。那么plist文件内容是这样的。内容主要是告诉我们下载ipa文件的地址和icon图片的下载地址。这个文件必须通过https的访问才可以。因为现在苹果规定必须以https的方式进行访问同学们一定很好奇,这中间是怎么一个过程呢。其实是利用苹果自家的浏览器saf转载 2021-02-26 14:15:18 · 3646 阅读 · 0 评论 -
Charles抓包HTTPS
抓包工具在APP开发过程中使用非常频繁,对开发者理解网络传输原理以及分析定位网络方面的问题非常有帮助。笔者一直比较喜欢Wireshark,但由于最近的项目是短连接项目,Wireshark太过重量。所以笔者选择Charles进行App的抓包,配置也更加简单。1. HTTP抓包配置1.1 查看当前wifi的IP地址1.2 设置手机HTTP代理iOS手机,连接与电脑同一个WiFi。然后点击“设置->无线局域网->连接的WiFi”,设置HTTP代理。进入wifi的配置设置。转载 2021-02-26 12:31:45 · 683 阅读 · 0 评论 -
Git批量删除本地分支
删除分支命令删除一条分支:git branch -D branchName删除当前分支外的所有分支:git branch | xargs git branch -d删除分支名包含指定字符的分支:git branch | grep ‘dev*’ | xargs git branch -d命令解释|道命令,用于将一串命令串联起来。前面命令的输出可以作为后面命令的输入。git branch用于列出本地所有分支。xargsxargs 是给命令传递参数.转载 2021-02-07 20:12:01 · 5473 阅读 · 0 评论 -
iOS使用wifi传输文件到iPhone
如今手机发展非常迅速,app的种类也琳琅满目,而自从有了4G网之后,手机流量也越来越不够用了。所以现在越来越多的app有了本地文件的管理功能,方便用户随意浏览手机文件的同时,也为用户节约了流量的使用。 如上面的app截图中的功能,现在越来越多的app都具有了在电脑上通过网页wifi传输文件到手机端的功能,不仅有文字类,也有图片类,还有视频类,前提是电脑和手机都在同一个wifi下。这个功能的实现也很简单,在这里介绍两种方式来实现这个功能。方式一:使用CocoaHTTPServer框架...转载 2021-02-04 10:53:42 · 1688 阅读 · 0 评论 -
ios ping服务器
大多数App都严重依赖于网络,一款用户体验良好的的app是必须要考虑网络状态变化的.iOSSinger下一般使用Reachability这个类来检测网络的变化.Reachability这个是苹果开发文档里面的一个类,官方写的,用来判断网络的变化,包括无网络,wifi,和蜂窝三种情况.Reachability类实际上是苹果公司对SCNetworkReachability API的封装,使用方法比较简单,这里不再介绍.说说它的优缺点:优点 使用简单,只有一个类,官方还有Demo,容易上手...转载 2020-12-22 12:25:07 · 1674 阅读 · 0 评论 -
sourceTree在其他分支只合并某次提交
1.在sourceTree中找到需要提交的分支, 就是你想要修改的分支2.在显示提交信息中,选择所有分支,这样子就会出现所有分支的修改信息。3.找到需要合并的某次commit,点击,右键会出现弹框4.选择“遴选”5.点击确定按钮6.会看到这个分支下面刚才选中的某次修改内容,点击推送提交即可。这样子就完成只对某次或者不连续修改内容的提交。cherry-pick使用该命令可以将任意的commit通过其commit号将其合并到你想要的分支上。打开终端,在对应的.转载 2020-10-23 11:01:35 · 3964 阅读 · 1 评论 -
Git中的merge和rebase
merge和rebasegit的merge和rebase都是用来合并分支的, 将一个分支的更改并入另一个分支。git merge:将两个分支,合并提交为一个新提交,并且新提交有2个parent。git rebase:会取消分支中的每个提交,并把他们临时存放,然后把当前分支更新到最新的origin分支,最后再吧所有提交应用到分支上。主要说的是两者在实际操作中的区别。什么是分支分支就是便于多人在同一项目中的协作开发。比方说:每个人开发不同的功能,在各自的分支开发过程中互不影响,完成后转载 2020-09-20 11:45:08 · 1542 阅读 · 0 评论 -
为什么MD5不可逆, 彩虹表是怎么攻击的
为什么MD5是不可逆的?先说大白话版本的,因为MD5算法里面有很多不可逆的运算。比如移位,假设:10010001 左移两位后是:01000100,你有什么办法把它移回来吗?移出去的已经找不回了哦.MD5是一种散列函数,使用的是hash算法,不可逆的原因是在计算过程中原文的部分信息是丢失了的. 一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。也就是一共有2^128种可能,大概是3.4*..转载 2020-08-23 18:23:49 · 3776 阅读 · 0 评论 -
ios 时间统计, 代码效率测试
NSDate 属于Foundation。NSDate 或 CFAbsoluteTimeGetCurrent() 返回的时钟时间将会会网络时间同步。NSDate、CFAbsoluteTimeGetCurrent()常用于日常时间、时间戳的表示,与服务器之间的数据交互。其中 CFAbsoluteTimeGetCurrent() 相当于[[NSDate data] timeIntervalSinceReferenceDate];CACurrentMediaTime() 属于 QuartzCore。ma转载 2020-08-11 15:52:39 · 1022 阅读 · 0 评论 -
@synthesize到底对属性干了什么, 使用场景总结
synthesize的意思是 "合成".Xcode4时,@property只能生成getter、setter方法的声明, 需要手动加上@synthesize,才会有set\get的实现,以及对应的变量_propertyName;property = setter方法声明 + getter方法声明synthesize = ivar + setter实现 + getter实现从Xcode5开始, 编译器有了自动合成机制,@property可以自动生成_propertyName成员变量和ge.原创 2020-07-28 15:27:34 · 2378 阅读 · 1 评论 -
iOS 音频学习边录音边转码AVCaptureSession
这种方法用来录音相对比较少, 主要是用来录视频的多一些, 不过也是一种方法, 所以就说一下,主要的难点也是在AudioBooxTool这个框架, 用起来不是很熟。1.录制声音利用AVCaptureSession来录音, 这部分是属于AVFounation的内容, 相对比较基础, 所以直接看代码就好 //建立会话者 AVCaptureSession *captureSession = [[AVCaptureSession alloc] init]; self.captu转载 2020-06-06 16:02:50 · 1073 阅读 · 0 评论 -
ios属性同时重写set/get方法报错
使用property的时候,同时重写set get方法会报错,如@interface ViewController : UIViewController@property (nonatomic, copy) NSString *name;@end单独重写任意一个方法都不会报错,但是同时重写的话,会报错!主要是因为当你复写了get和set方法之后@property默认生成的@synthesize就不会起作用了,这也就意味着你的类不会自动生成出来实例变量了,你就必须要自己声明实例变量原创 2020-06-01 15:21:33 · 2854 阅读 · 0 评论 -
Xcode一个项目中建立多个工程
Xcode里面是可以同时存在多个工程的。可以通过存放在同一个工作空间来实现同一个Xcode页面存在多个工程,也就是有多个xcodeproj。如下图所示。在Xcode页面中管理3个工程这样不仅可以方便管理几个相似功能的工程,更重要的是,可以实现多工程联编。接下来我们会做一个多工程的Demo建立一个工作空间MyWorkspace。 使用方法一建立一个普通的Xcode工程MyApp...转载 2020-05-07 16:12:53 · 2849 阅读 · 0 评论 -
XCode同一Project下创建多个target
一:项目背景 在实际开发过程中难免会遇到同一个项目要发多个版本来服务于业务的需求,而两个版本仅有微小的不同.比如我们要发的版本有:1.测试版(给测试组,用于上线前测试)2.线上版(给测试组,用于测试后端上线后对前端的影响)当然你还可以根据业务需求创建更多的target.二:操作步骤创建新的target有两种方式:1.通过新建target①:Xcode工具栏-F...转载 2020-05-07 12:14:37 · 1218 阅读 · 2 评论 -
ios 模拟器使用InjectionIII
1、在App Store搜索InjectionIII直接安装2、AppDelegate.m中didFinishLaunchingWithOptions方法里面植入代码:#if DEBUG // iOS [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjec...转载 2020-04-05 16:28:55 · 446 阅读 · 0 评论 -
虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。需要注意的是:虚拟内存不只是“用磁盘空间来扩展物理内...转载 2020-03-04 19:28:07 · 740 阅读 · 0 评论 -
H.265与H.264有何不同
H.264与H.265都是视频压缩格式.H.264上目前比较主流的压缩算法 ,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。H.265是对H.264的一个升级,更好的压缩算法,可以更一步提高压缩比, 在更低的带宽下 也可以实现标清数字图像传送,...转载 2020-03-03 15:30:07 · 6128 阅读 · 0 评论 -
音频采集的基础知识
自然界中的声音非常复杂,波形极其复杂,需要将模拟信号转换成数字信号,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。抽样:对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号,对应采样频率; 量化:用一组规定的电平,把瞬时抽样值用最接近的电平值来表示,通常是用二进制表示; 编码:用一组二进制码组来表示每一个...转载 2020-01-20 14:08:24 · 3099 阅读 · 0 评论 -
iOS使用Lottie做动画
Lottie 动画简介Lottie 动画是 airbnb开源的动画解决方案,支持多种平台,可以使我们不费吹灰之力就可以将动画接入 app 中,只需要一个 json 文件即可。再也不需要进行复杂的动画绘制工作了,节约了很多时间。 下面我来详细介绍一下 Lottie 在 iOS 端的接入过程以及部分源码解读。https://www.jianshu.com/p/abc5b924e6de部分效果如...转载 2020-01-02 11:41:11 · 2515 阅读 · 0 评论 -
ios应用签名
关于iOS应用签名我想一起探讨一下它的原理. https://www.jianshu.com/p/02034d1a91b5, 首先我们需要了解一个东西,叫做数字签名数字签名(digitally signed)名词解释:为什么用签名这个词.因为老外喜欢用支票,支票上面的签名能够证明这玩意是你的.那么数字签名顾名思义,就是用于鉴别数字信息的方法.接下来我们思考一下.想要证明数字信...转载 2020-01-01 18:08:58 · 1461 阅读 · 0 评论 -
Xcode导出真机内的沙盒文件
1.首选让真机连上Mac,打开Xcode。2.点击Window -> Devices and Simulators.如下图:3.点击选择需要导出沙盒文件的App,然后点击下面的齿轮。4.点击Download Container。然后选择好下载到的目录即可:5.真机的沙盒文件就导出来了:...转载 2019-11-21 19:33:12 · 3061 阅读 · 0 评论 -
xcode 正确的使用断点
普通操作基本的断点操作如下点击那个黑列列就创建了一个断点,再次点击就临时取消这个断点(但是不删除),长按那个断点拖出去就删除了(mac os的系统工程师就是稀饭拖动的快感),当然也可以右键那个创建的断点,会弹出相应地菜单。当然也还可以监视某个变量!在对象视图中,右键某个对象,点击“Watch ‘XXX’”就完成XXX对象的监视了。这里我监视了lab这个UILabel...转载 2019-11-20 19:14:24 · 4475 阅读 · 1 评论 -
提高xcode编译速度
今天来介绍一个小工具ccache,其可以提高xcode的编译速度。说起缘由,是因为我的苹果电脑配置比较低,而每次开发调试或测试打包都需要编译工程,虽然项目工程代码量不算大,但是编译的时间还是很长,尤其是修改了头文件或者Archive打包时,看着进度条像蜗牛在爬一样,心里都有小动物在奔腾......好在遇到了ccache,其原理是通过把项目的源文件用ccache编译器编译,然后缓存编译生成的信息...转载 2019-11-18 16:59:56 · 559 阅读 · 0 评论 -
CocoaPods原理
CocoaPods是IOS项目上负责管理依赖的工具,即对第三方库的依赖。CocoaPods 的原理是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目,这样,源码管理工作任务从主项目移到了Pods项目中. 1.Pods项目最终会编译成一个名为libPods.a的文件, 主项目只要依赖这个.a文件即可. 2.对于资源文件, CocoaPods提供了一个名为P...转载 2019-11-05 19:36:07 · 6680 阅读 · 1 评论 -
iOS包体积优化
首先需要了解下ipa包的组成:ipa是一个压缩包, 安装包里的主要构成是(图片+文档+二进制文件)那么总的原则就是找到这些无效的东西清理掉。还有就是修改编译器的一些设置。(1)项目从混编改为纯OC或者纯swift编程 (2)无用资源文件清理 (3)工具类、工具方法合并 (4)无用业务排查下线 ,无用类清理,无用第三方库清理 (4)编译选项优化(5)部分资源文件云端下载 这...转载 2019-11-05 18:43:54 · 3320 阅读 · 0 评论 -
ios启动时间优化--实践
一般而言,启动时间是指从用户点击 APP 那一刻开始到用户看到第一个界面这中间的时间。我们进行优化的时候,我们将启动时间分为pre-main时间(详细的pre-main介绍)和main函数到第一个界面渲染完成时间这两个部分。因为 APP 的入口在main函数 ,在 main 函数之后我们的业务代码(除了+load方法)才会执行。这里有两个阶段1. pre-main阶段...转载 2019-10-24 12:35:55 · 832 阅读 · 0 评论 -
iOS 使用pod管理自己的代码
使用pod管理代码的好处通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于公共父类的封装,对于系统的类写的类别,我们为了避免写一些重复的代码。为了以后方便在其他App中使用,我们可以使用Cocoapods把这些小点子,小功能,可以封装成一个pod,当下次使用的时候,只需简单配置就可以了。这一点特别是在公司开发多个项目的时候,可以很方便快速的共享公共的代码,节约开发时间,这就是为什...原创 2019-03-12 16:55:34 · 1277 阅读 · 0 评论 -
一步步完成的 json或字典 转 model
前言我们在iOS开发中,一般会使用MVC或者MVVM等模式。当我们从接口中拿到数据时,我们需要把数据转成模型使用。下面我就带大家一起用runtime一步一步的来完成这个转换框架.(比较简单的model不用runtime也可以的) .git地址https://github.com/guochaoshun/RootModel1、先写一个简单的字典到模型的转换先来最简单的 , 比如服...原创 2017-02-07 09:51:22 · 3284 阅读 · 0 评论 -
ios SDWebImage显示webp格式图片
ios原生是不支持webp, 但是这图片优点很多,图片的加载需要对webp格式的图片做兼容,对于webp格式的图片需要经过处理才能支持。实际上SDWebImage中已经支持了webp格式的图片,可以在UIImage与WebP之间进行图片的相互转换,所以对于iOS端的WebP格式图片的支持可以通过SDWebImage/WebP来支持处理,但是11.2以上的系统就无法解析Data了。一、首先:...转载 2019-08-22 11:27:05 · 3170 阅读 · 0 评论 -
VLC 集成
参考博客 : http://blog.csdn.net/crash_zo/article/details/51459604 , 这个的添加依赖库不全 http://www.jianshu.com/p/e0cb654370ee , 这个有需要的所有依赖库关于VLC配置问题,根据个人经验整理了一下,希望能帮到大家我没有在官网直接下载,因为下载下来的包不全,转载 2017-07-27 14:28:34 · 1020 阅读 · 0 评论 -
ios NSLog内容,崩溃日志,重定向到本地
主要参考的原文 :http://www.jianshu.com/p/8222a8b24129最简单的方式就是用iOS自带的首先是日志输出,分为c的printf和标准的NSLog输出,printf会向标准输出(sedout)打印,而NSLog则是向标准出错(stderr),我们需要同时让他们都将日志打印到一个文件中。下面2句是最核心的内容 .//写入 freopen([logFi...原创 2017-08-04 13:27:04 · 1077 阅读 · 0 评论