自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CaicaiNo.1

生活需要激情,就像鱼需要水

  • 博客(157)
  • 收藏
  • 关注

原创 iOS开发-全量日志捕获CocoaLumberjack

文章目录前言ASL前言全量日志就是app的运行日志打印等等。有时候光凭Crash日志并不能找到并解决问题,如果有Crash时App的日志输出,则会事半功倍。CocoaLumberjack是OSX和iOS平台优秀的全量日志抓取第三方库。github链接ASL (Apple system logger)是苹果公司自己实现的一套输出日志的接口。ASL通过DDASLLogger.m文件,我们了...

2020-04-05 14:15:23 2141

原创 iOS开发-App电量消耗以及CPU占用

文章目录如何获取电量消耗UIDevice 获取IOKit电量分析如何获取电量消耗UIDevice 获取- (float)batteryValue { [UIDevice currentDevice].batteryMonitoringEnabled = YES; return [UIDevice currentDevice].batteryLevel;}这个值以0.05...

2020-04-04 12:19:58 900

原创 iOS开发-App应用崩溃卡顿分析

文章目录App崩溃问题可捕获的崩溃信息收集PLCrashReporter实现系统接口不可捕获的崩溃iOS后台模式Runloop 卡顿Watch DogApp达到单个App上限被杀死JetsamEvent 分析内存大小XNU获取内存限值task_info接口App崩溃问题app经常会遇见崩溃问题,比如下数据越界多线程操作同一指针,当指针为空时崩溃野指针问题KVO问题NSNotific...

2020-04-04 01:35:52 4148

原创 iOS开发-水印视图的简单制作

文章目录使用CoreGraphic绘制效果代码如下使用CoreGraphic绘制NSAttributedString能够使用drawAtPoint方法绘制到文本上CGContextSaveGState通过Pop Push上下文堆栈,避免影响其他通过CGContextConcatCTM可以进行二维变换,进行倾斜30度CGAffineTransform transform = CGAff...

2020-03-30 19:09:54 887

原创 iOS开发-fishhook交换NSLog函数实现

文章目录fishhookhook原理hook找到NSLog的地址hook后的地址fishhookhttps://github.com/facebook/fishhookfishhook是一个facebook的开源项目。通过修改Mach-O文件指向外部函数的指针的值,来达到hook的目的hook原理苹果为了能在 Mach-O 文件中访问外部函数,采用了一个技术,叫做PIC(位置代码独立)...

2020-03-29 17:10:10 1515

原创 iOS开发-常见的崩溃信息

文章目录崩溃信息构成Exception信息常见的崩溃问题额外的诊断信息崩溃信息构成常见的崩溃日志的头部信息如下:Incident Identifier: B6FD1E8E-B39F-430B-ADDE-FC3A45ED368CCrashReporter Key: f04e68ec62d3c66057628c9ba9839e30d55937dcHardware Model: iPad6,8...

2020-03-27 10:23:04 2546 1

原创 iOS开发-dSYM文件

文章目录dSYMxcode的符号化解析每个架构的符号Bitcode相关定位你的dSYMBuild UUID对比恢复隐藏的符号表文件符号化解析操作命令dSYM根据 苹果官方文档,当编译器将源代码转为机械码时,会生成调试符号(debug symbols),通过这些符号可以将机械码映射回到源代码的位置,也就是我们常说的符号化解析。这些调试符号存储在二进制文件中,或者存储在相应的调试符号(dSYM)...

2020-03-26 01:01:32 1204

原创 iOS开发-代码分析工具之Infer

文章目录简介使用安装设置 PATH 变量使用简介https://fbinfer.com/docs/getting-startedInfer 是一个静态分析工具。Infer可以分析 Objective-C, Java 或者 C 代码,报告潜在的问题。任何人都可以使用 Infer 检测应用,这可以将那些严重的 bug 扼杀在发布之前,同时防止应用崩溃和性能低下关于Infer特性可以去 ht...

2020-03-22 19:52:37 2461

原创 iOS开发-代码分析工具之Clang Static Analyzer

文章目录简介使用方法简介Clang Static Analyzer是一款静态代码扫描工具,专门用于针对C,C++和Objective-C的程序进行分析。已经被Xcode集成,可以直接使用Xcode进行静态代码扫描分析,也可以单独在命令行下使用并提供html格式的输出报吿和xml格式的结果文件方便集成到Jenkins上进行展示。不过相对来说,csa对oc可用的检查器简直是少之又少,只有16条,而...

2020-03-22 18:50:15 995

原创 iOS开发-代码分析OCLint工具

文章目录简介OCLint可以发现的问题使用安装创建所需要的文件调用分析指令Pod等三方库的过滤简介OCLint是一个 静态代码分析 工具,通过检查C、c++和Objective-C 代码并寻找潜在的问题.OCLint 就是一个建立在 Clang 上的工具,能够发现代码中潜在的问题,可以用来提高质量和减少缺陷, 它目前支持C, C++, Objective-C语言OCLint可以发现的问题...

2020-03-22 17:47:02 471

原创 iOS开发-APP组件模块化的理解

文章目录模块化的意义模块化的粒度组件组件化方案MGJRouter 的路由映射CTMediator 中间者Category的编写模块化的意义当项目大到一定程度,开发人员也多,所有的代码都集中到一个仓库,提交修改都要等其他人提交完成不报错才能开始,非常麻烦。再者就是代码之间耦合严重,到处引用,穿插错综复杂,往往改变一个变脸,需要修改很多处代码,很容易出错。对于这种情况,就要进行架构整治,模块化...

2020-03-21 12:40:34 587

原创 音视频开发-H264数据组成

文章目录H264数据构成 NAL起始码、结束码网络传输结构 NALUNAL HeaderNALU顺序H264H264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成,一个片由一个或多个宏块(MB)组成,一个宏块由16x16的yuv数据组成。宏块作为H264编码的基本单位。一个宏块由一个16×16亮度像素和附加的一个8×8 Cb和一个8×8 Cr彩色像素块组成,...

2020-03-19 00:26:58 517

原创 Cocoapods使用代理

文章目录1.更改gem源2.设置代理端口设置代理取消方法验证1.更改gem源gem sources -lgem sources --remove https://rubygems.org/gem sources --add https://gems.ruby-china.comgensees-iMac:~ gensee$ gem sources -l*** CURRENT SOURC...

2020-03-17 11:51:56 8280 1

原创 iOS开发-如何使用Runtime在分类中添加一个weak属性

文章目录使用runtime给分类添加属性使用NSProxy使用runtime给分类添加属性- (HCPushSettingViewController*)HCParentController { return objc_getAssociatedObject(self, _cmd);}- (void)setHCParentController:(HCPushSettingView...

2020-03-17 11:29:21 693

原创 Mac录制iOS模拟器转为GIF

文章目录使用QuickTime录制屏幕PicGIF Lite使用QuickTime录制屏幕在启动台找到QuickTime Player选择录制区域然后生成了文件PicGIF Lite使用PicGIF Lite,mac商店上就有导入视频删除不需要的帧再右上角导出GIF结果如下:...

2020-03-16 21:04:42 243

原创 iOS开发-创建Cocoapods公有库记录

文章目录1.创建git仓库2.更新工程代码3.生成podspec配置文件4.lint5.注册CocoaPods6.检测是否注册成功7.推送到远程Pod仓库1.创建git仓库2.更新工程代码通过 git clone https://github.com/haocaihaocai/HCPushSettingViewController.git将git仓库拉下来,然后将我们的代码添加。git...

2020-03-16 18:51:32 385

原创 iOS开发-FDFullscreenPopGesture冲突导航栏无法隐藏

文章目录问题描述处理方法修改源码不修改源码问题描述FDFullscreenPopGesture是iOS平台上很方便使用左滑手势退出的三方库,在使用FDFullscreenPopGesture会出现与其他三方库冲突,导航栏隐藏不了,或者按钮都显示。看一遍源码了解其实现,解决这种冲突问题。处理方法修改源码源码是通过交换push方法实现,若想不影响某个视图,就直接调用原push方法就可以...

2020-03-10 17:36:17 1438

原创 Mac开发-屏蔽点击事件的遮罩视图

文章目录遮罩视图Code遮罩视图在iOS开发中,我们经常会通过hitTest:withEvent:方法来拦截 事件传递。但在Mac开发中,虽然机制有些许差别,但重写hitTest:withEvent:并不管用了,通过addLocalMonitorForEventsMatchingMask拦截又太广泛了,容易全部拦截。Code其实重写NSView的事件方法就好了,就能创建遮罩视图。#i...

2020-03-10 13:35:29 2223

原创 Mac开发-NSAttributedString颜色模糊问题记录

文章目录问题描述解决方案最终效果问题描述使用富文本显示时,出现模糊的问题问题如下:我这里只需要3个字特殊颜色:代码如下: NSString *colorStr = @"\"上讲台\""; NSString *originStr = @"为了方便老师上课前检查音视频质量,点击\"上讲台\"仅打开老师的摄像头和麦克风"; NSMutableAttributedStrin...

2020-03-06 15:39:52 190

原创 Mac开发-自定义NSButton背景色圆角阴影

文章目录目的CustomButton代码使用方法目的制作一个带阴影的Button替换NSButton背景色以及绘制圆角和阴影。设置图片的话就还要考虑阴影问题,颜色还要考虑是否和图片的一致,复用性也不高。起初想使用drawRect:直接绘制,但是会遮罩文本和无法显示圆角,使用其layer层的现有接口似乎更简单快捷,所以着手修改其layer层来实现了。CustomButtonNSVi...

2020-03-06 12:40:39 1489

原创 Mac开发-NSAnimateImageView展示图片数组

文章目录NSAnimateImageView代码NSAnimateImageView相比于iOS平台,mac平台的NSImageView并没有类似animationImages这种可以方便展示图片数组为GIF的方法。这里自己制作了一个,非常简单,不做太多阐述了,记录一下。代码NSAnimateImageView.h//// NSAnimateImageView.h// Train...

2020-03-06 12:22:59 268

原创 Mac开发-自定义NSPopover背景色(替换其三角部分)

文章目录NSPopover简单使用apperance弹出样式 NSPopoverBehavior出现位置分析图层结构NSPopoverNSPopover是Mac 10.7 以上的方便弹出控件(10.7之前可以使用这个INPopoverController),需要依赖NSViewController来使用.最近需要做一个控件,区别就是背景色不一样,所以想到了替换其背景色实现。简单使用 ...

2020-03-04 18:18:45 1408

原创 iOS开发-ViewController的生命周期相关

文章目录ViewController生命周期加载流程didReceiveMemoryWarningView的layoutSubviewsRunloop相关view的drawRect:方法ViewController生命周期加载流程1.init或者initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib)2.loadView:加载view...

2020-03-03 14:12:29 377 1

原创 iOS开发-一个iOS覆盖面比较广面试题

文章目录题目Code 1崩溃原因Code 2不会崩溃的原因结尾题目在@property (nonatomic, strong) NSString *name;的情况下分别执行以下两段代码,会发生什么? //Code 1 dispatch_queue_t queue = dispatch_get_global_queue(0, 0); for (int i = 0; i < 1...

2020-02-28 17:01:25 481

原创 iOS开发-Runloop中自定义输入源Source

自定义输入源根据苹果官方文档说明,基于端口的源(Source1)由内核自动发出信号,定制源(Source0)必须从另一个线程手动发出信号定制源Source0创建custom input source需要定义以下内容:您希望输入源处理的信息。一个调度函数(scheduler),让感兴趣的客户端知道如何联系输入源。执行任何客户机发送的请求的处理函数(handler)。用于使输入源无效的...

2020-02-26 16:40:59 2572

原创 iOS开发-导出xcode中已有的配置文件Provisioning profile

文章目录导出指定的单个配置文件导出所有证书配置以及Profile文件删除本地的Profile文件iOS开发中,遇到换电脑情况,大部分证书和配置文件都需要重新弄,证书可以从官网上下,配置文件没有过期和没有删除的情况下,也能从官网下载,有时候就想用老的配置文件,官网上也没有了。导出指定的单个配置文件选择工程->Signing & Capabilities这里xcode版本为...

2020-02-26 14:43:10 2982

原创 iOS开发-CPU架构记录

文章目录种类详细分类xcode的设置指令集查看lipo -infonm种类CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。ARM公司: arm架构intel公司: intelx86系列架构AMD公司: amdx86系列架构电脑: 一般是x86 / x64手机: 一般是arm (微处理器,功耗低,体积小)32位: inte...

2020-02-26 11:39:17 556

原创 iOS开发-触摸事件传递Touch Event

文章目录大概流程Source0事件传递hitTest方法实现响应链大概流程从iphone屏幕点击,到事件响应大概经历了这几个过程屏幕接收到点击事件,包装成Source0类型的Event事件添加到Main Runloop中主线程执行Source0,并开始事件传递,确认响应者,即由UIApplication传到UIWindow,再由父视图传子视图,即由下至上传递,通过pointInside:...

2020-02-25 17:22:01 1561

原创 iOS开发-NSBluetoothAlwaysUsageDescription

[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a strin...

2020-02-10 11:16:17 5699

原创 Parallels Desktop 12上win7复制键无效

提供下mac下Parallels Desktop 12破解版的下载链接链接: https://pan.baidu.com/s/13pBlNyZWiZB42Xn_5P21AQ 提取码: wes71.Parallels Desktop的设置2.win7虚拟机的设置没有安装Parallels tool这里会有个黄色感叹号,点击后,我的电脑中会有CD驱动安装重启后,即可使用文件共享、复制粘贴...

2020-02-03 18:43:32 3857

原创 Mac开发-暗黑主题禁用以及适配

对于MacOS 10.14之后的暗黑主题,会默认影响App的外观效果。系统会自动选择任何与macOS 10.14或更高版本的SDK相关的应用程序,让它们适配亮和暗的主题模式。如果控件设置的颜色为系统提供的控件颜色或者背景,那么在暗黑模式下就有可能发生颜色变化,如果没有适配,就会产生适配问题。禁用全局禁用在plist文件中添加NSRequiresAquaSystemAppearance键(值...

2020-01-16 11:35:38 1317

原创 Mac开发-NSButton左标题右小图的使用

NSButton相比于UIButton更难使用,这里记录下NSButton左标题右小图的布局使用方法图片在左右两端,以小图显示,例如下面:左右两侧都添加了箭头。这个实现可以由系统NSButton的Style为Check类型实现。先拖拽一个NSButton然后xib上配置其Image为箭头。这里系统其实默认帮我们配置了图标修改image只是换掉了图标。这里图标在左侧,修改ima...

2020-01-13 14:55:27 907

原创 Mac开发-NSCollectionView自定义使用

文章目录简介delegatedataSourcecollectionViewLayoutNSCollectionViewDelegateFlowLayout操作示例布局1简介相比于UICollectionView,NSCollectionView可以实现的功能都一样,主要是使用方式上注意点很多,这里推荐使用xib来自定义NSCollectionView和NSCollectionViewItem...

2020-01-10 17:21:40 2737 1

原创 mac开发-install_name_tool: changing install names or rpaths can't be redone for:

类似错误如下:error: install_name_tool: changing install names or rpaths can't be redone for: /Users/gensee/Library/Developer/Xcode/DerivedData/Training-emkrlchivsbjssanebsiarnsozuw/Build/Products/Debug/Tra...

2020-01-10 10:43:53 1215

原创 iOS开发-PlistBuddy Script实现版本自加

使用PlistBuddy工具操作plist文件,通过修改版本号数值实现版本递增PlistBuddy语法Command Format: Help - Prints this information Exit - Exits the program, changes are not saved to the file Save - Saves the current ch...

2020-01-08 13:02:22 380

原创 C++学习-基类析构函数必须使用virtual原因记录

C++中,为了避免派生类被基类指针指向并释放时,派生类的析构函数不会被调用所产生的内存泄漏问题,析构函数一般使用virtual修饰Women.hppclass BaseClass {public: virtual ~ BaseClass(); //1.这里不使用virtual,在子类释放时就会发生内存泄漏 virtual void sayWhatWrongWithYou();...

2020-01-06 14:51:12 275

原创 Mac开发-摄像头麦克风权限获取

使用AVCaptureDevice authorizationStatusForMediaType判断摄像头和麦克风的授权状态。使用AVCaptureDevice requestAccessForMediaType:获取摄像头和麦克风的授权系统方法都很清楚,这里列出工具代码供参考:#import <Foundation/Foundation.h>NS_ASSUME_NONNU...

2020-01-03 09:55:17 7518 1

原创 SVN批量删除已经在本地删除的文件

有时候我们删除了很多文件,终端打印svn st之后出现! xxxxx.h! Training/xxxxx.m! Training/xxxxx.h! Training/xxxxx.mm! Training/xxxxx.xib! Training/xxxxx.h! Training/xxxxx.m! ...

2019-12-19 20:40:23 719

原创 Mac开发-多语言处理之xib

文章目录多语言处理xib多语言通过创建Controller添加语言localizable strings和Interface Builder Cocoa XIBInterface Builder Cocoa XIB转localizable strings设置无效的问题简体转繁体.string设置无效base xib作用多语言处理对于文本的多语言处理,使用NSLocalizedString并配置...

2019-12-19 19:31:08 667

原创 Mac开发-监听全局点击事件,隐藏弹出视图

iOS中我们做一个弹出视图,通常会加一个默认透明图层来响应点击事件,这样处理,点击空白处时,会响应隐藏方法。达到了自动隐藏的目的。在MacOS开发中,我们使用NSEvent事件来监听点击事件在其他地方的点击。并进行处理。如图:需要在点击任何红色区域外时候,隐藏红色区域的视图。使用NSEvent的addLocalMonitorForEventsMatchingMask方法NSEvent ...

2019-12-18 19:46:50 1349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除