自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Developer

技术博客

  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 iOS-VoIP Push Notification

最近看了一篇文章,说的是微信实现收款到账语音提醒功能实现。原文章 文中提到了VoIP Push Notification,本文针对推送的种类以及如何利用推送唤醒 app 进行总结。普通推送远程推送和本地推送区别网上资料太多了,简单说一下,比如今日头条,有什么大的新闻会在手机端接收到推送,这个就是远程推送,是把相关信息推送到苹果推送服务器-APNS。本地推送就是在本地设定一个时间,其实就是一个类似闹

2017-12-23 11:48:16 3220

原创 Mac环境搭建基于Hexo的个人博客指南

写博客早已是众多技术爱好者们积累知识、分享知识的一个途径。国内有很多不错的写作平台,也许你也会像我一样纠结该去哪里写。而搭建一个属于自己的博客平台,根据自己的喜好突出自己的风格,或许不失为一种更好的选择。类似的教程有很多,但是都不够全面或者是版本老旧已经无法按照文中流程顺利部署。本文从头到尾按照先本地部署后服务端部署的思路,一步步讲解搭建流程,希望读者能够有所收获。如有错误还请不吝赐教。Hexo 是一个快速、简洁且高效的博客框架。

2022-11-28 22:54:13 914 1

原创 ffmpeg入门到精通-音频采集

流程:注册设备 avdevice_register_all();获取输入对象格式 av_find_input_format(FMT_NAME)打开设备 avformat_open_input打开文件写入数据结束关闭文件、关闭设备#include "audiothread.h"#include <QThread>#include <QDebug>#include <QDateTime>#include <QFile>extern "

2021-03-30 23:05:03 316

原创 使用Xcode开发Qt项目

为什么要用XCode,因为Qt Createor不如Xcode好用呗!进入正题:用QtCreateor 新建一个项目, 项目名为QTForXcode(随意起)。打开命令行工具,cd到上一步项目所在的目录。执行命令 /usr/local/Cellar/qt/6.0.2/bin/qmake QTForXcode.pro -spec macx-xcode随后会生成一个QTForXcode.xcodeproj 文件,打开不报错说明就成功了。注意:因为qt版本不同,所在路径可能会不一样,记得修改命令。

2021-03-30 22:56:57 2284 2

原创 Swift5 特性之方法交换

swift5 通过在方法前面添加关键字来实现方法的交换,遗憾的是,我们无法通过这种方式hook系统的方法。并且,不管你交换多少次,实现的总是最后一次。import UIKitclass TestClass { dynamic func test() { debugPrint("一个测试方法") }}extension TestClass { @_dynamicReplacement(for: test()) func anotherTest()

2021-01-27 19:12:36 1229

原创 iOS-RunLoop-记一次RunLoop监控卡顿探索

前两天,看到一篇文章,说的是在某种卡顿方案监控下,无法监控到以下代码引起的卡顿:- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { int a = 0; NSLog(@"-->耗时操作begin"); for (long i = 0; i < 1000000000; i++) { a = a + 1; }

2020-12-19 17:07:19 344 1

原创 iOS-在控制器View中添加子视图后,几个方法的调用顺序问题

iOS-在控制器View中添加子视图后,几个方法的调用顺序问题结论:修改子视图的frame,会出发控制器的两个方法:viewWillLayoutSubviews,viewDidLayoutSubviews;父视图调用过上述两个方法之后,子视图才调用layoutSubviews。如果使用自动布局,则需要设置translatesAutoresizingMaskIntoConstraints属性为false,此时设置view的frame属性无效。示例代码class CustomButton: U

2020-10-15 20:02:06 490

原创 iOS-卡片/卡牌堆叠式布局,无限滑动实现方案(一)

iOS-卡片/卡牌堆叠式布局,无限滑动实现方案(一)效果图思路众所周知,UICollectionView是非常强大的,只要脑洞大,没有什么布局是实现不了的。而其中最关键的就是对UICollectionViewLayout的设计,也就是自定义布局。步骤:继承UICollectionViewLayout,创建UICollectionViewLayout的子类,如JYCardViewLayout子类中重写父类方法:override func prepare()override var col

2020-10-14 11:44:12 3956

原创 Swift 可选值类型

Swift 中的可选值(Optional)类型Optional类型的本质enum Optional<Wrapped>{ case none case some(Wrapped)}Optional 实际上就是一个枚举。可选值是Swift中重要的基础类型之一,所以有更加简洁的语法来表示。例如:Optional<Int>可以写成Int?因为可选值遵守ExpressibleByNilLiteral协议,所以可以用 nil 代替.none。当你看见问号的时候,实际

2020-08-08 23:54:30 611

原创 iOS 动画之 Lottie 的使用

OC 项目:建议使用2.5 版本,从 GitHub 上可以看到,3.0 版本以上是swift 写的。Swift 项目:直接使用最新版本。通过 CocoaPods 集成:在 Podfile 中添加 pod ‘lottie-ios’,’~> 2.5’运行 pod install示例代码LOTAnimationView *animation = [LOTAnimationView ...

2019-09-14 15:10:41 983

原创 iOS-字符串反转

NSString *string = @"abcdefg"; NSMutableString *mstring = [NSMutableString string]; for (NSInteger i = string.length - 1; i &gt;= 0; i--) { NSString *lastC = [string substringWithR...

2019-02-15 21:56:34 786

原创 iOS 证书签名那些事

之前面试了很多 iOS 开发工程师,项目做的还可以,但是当聊起证书和签名这些的时候,没有几个能说的头头是道。作为一个iOS 开发工程师,每当你配置各种证书忙的焦头烂额的时候,有没有想过这 TM 到底是为了啥?本文就告诉你这TM 的是为了啥!Why ?玩儿苹果的都知道,通常情况下我们喜欢的 APP 是从 AppStore 上下载的。但是,苹果希望在 iOS 平台对第三方 APP ...

2018-02-10 18:09:45 1273 2

原创 CGD 详解

1.0 GCD 概要1.1 什么是 GCDGrand Central Dispatch(GCD)是一种异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。 是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并行任务。在Mac OS X 10.6雪豹中首次推出,也可

2018-01-13 17:34:17 2314

原创 iOS-适配iPhoneX相关

屏幕大小iPhone X 的屏幕宽度同 iPhone 6、iPhone 6s、iPhone 7 和 iPhone 8 的 4.7 英寸屏幕宽度相同,即 375pt。屏幕垂直高度增加了 145pt,增加了 20% 的可视空间。竖屏规格:1125px × 2436px (375pt × 812pt @3x) 横屏规格:2436px × 1125px (812pt × 375pt @3x)状态栏高度增加

2017-12-08 17:10:19 824

原创 iOS 开发-一篇短文教你快速掌握 runtime 和 KVO

本文涉及到两个面试中经常被问到的知识点,runtime 和 KVO。希望通过本文将两个知识点结合起来一起学习,加深印象。Runtime 经常被用来做什么?动态添加属性 objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key, id _Nullable value, objc_AssociationPolicy

2017-09-17 00:48:57 525

原创 iOS开发-AR

iOS 11即将来临,届时所有的苹果用户都将体验到 AR 的魅力。作为开发者的我们,技术当然不能落伍。不管怎样,先体验一把!工具Xcode9iOS 11 没有的小伙伴可以到苹果官网下载 https://developer.apple.com/download/安装 iOS 11iPhone 打开https://developer.apple.com/download/,点击下载如图 按照

2017-09-07 11:57:25 8524

原创 位运算的实际应用

应用场景:开辟四个字节,放入一个数,高位补零。比如,我们需要把一张图片的长度上传到服务器,但是服务器规定必须用8个字节表示。因此做如下处理:NSData *imageData = UIImagePNGRepresentation(image); Byte byte[] = {0,0,0,0}; // 取第一个8位(从左开始) byte[0] = (Byte)((imageDa

2017-09-01 11:26:23 2326

原创 iOS-UITextView 输入字数限制一行代码搞定

实现 UITextViewDelegate 方法 - (BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text { return textView.text.length + (text.length - range.length

2017-08-23 18:12:15 808

原创 ios-UITextView 输入字数限制,一行代码搞定

实现 UITextViewDelegate 方法- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ return textView.text.length + (text.length - range.length)

2017-08-23 18:08:48 2455

转载 iOS-APP 签名原理

iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程。苹果的需求先来看看苹果的签名机制是为了做什么。在 iOS 出来之前,在主流操作系统(Mac/Win

2017-08-21 17:08:08 1283

原创 iOS-如何消除警告

基本语句#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wundeclared-selector" 这里是出现警告的代码段#pragma clang diagnostic pop上面的语句中 ignored 后面的字符串就是消除对应警告所需要写的字符串,不同的警告有不同的字符串与之对应,找到对应的警告即可(快速查阅快

2017-07-19 15:41:19 1955

翻译 关于 MVVM 和 ReactiveCocoa

背景我们的架构在App Store上的应用程序的1.5年中一直保持不变。该应用程序主要由RestCit旧版本的Core Data支持。我们还在应用程序的各种模块中使用标准序列化文件以及NSUserDefaults。随着核心数据通常需要(通过NSFetchedResultsController),我们的视图控制器经常与数据源层高度耦合。我们经常使用UIImageView +网络类型类别直接从视图层提取

2017-07-17 16:32:52 860

原创 iOS开发-CGRectGetMidX. CGRectGetMidY.CGRectGetMinY. CGRectGetMaxY. CGRectGetMinX. CGRectGetMaxX

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 110, 150)]; label.backgroundColor = [UIColor orangeColor]; [self.view addSubview:label]; /* CGRectGetHeight返回label本身的高

2017-07-16 17:10:11 596

原创 iOS-实现超出父视图点击响应

关于这个问题,其实网上有很多技术博客给出了很好的方案,但是仍然有个别博客将有严重错误的结论挂在网上(例如),本文就该问题进行了严格的论证,希望能够帮到有需要的人。错误结论:每次递归去调用hitTest:(CGPoint)point withEvent:(UIEvent *)event之前,都会调用pointInside:withEvent:来确定该触摸点是否在该View内。 正确结论:先调用hit

2017-07-11 17:03:49 875

原创 Mac - 使用百度网盘下载失败解决

百度网盘Mac 版真的不敢恭维。一堆 bug,联系客服没有反馈,也许他们快放弃这块产品了。 在批量下载文件的时候,经常出现卡死,然后无论你怎么操作都不会重启下载任务,更坑的是,残留在移动硬盘上的.downloading 文件无法删除。 40多个 g 的文件,硬是折腾了好几天,还没有成功全部下载完。 最终解决方案:把移动硬盘插到 Windows 系统的电脑上,修复一下竟然可以删除.downloa

2017-07-11 09:13:09 6391

原创 Mac - 使用百度网盘下载失败解决

百度网盘Mac 版真的不敢恭维。一堆 bug,联系客服没有反馈,也许他们快放弃这块产品了。 在批量下载文件的时候,经常出现卡死,然后无论你怎么操作都不会重启下载任务,更坑的是,残留在移动硬盘上的.downloading 文件无法删除。 40多个 g 的文件,硬是折腾了好几天,还没有成功全部下载完。 最终解决方案:把移动硬盘插到 Windows 系统的电脑上,修复一下竟然可以删除.downloa

2017-07-11 09:11:49 23702 3

原创 iOS调用QQ客户端,发起临时会话

方法一:通过 QQ 推广功能,不用接入 SDK 发起临时会话。需要用户安装 QQ 且打开的 QQ 必须开启推广功能。开启 QQ 推广功能if([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString:@"mqq://"]]) { //用来接收临时消息的客服QQ号码(注意此QQ号需开通QQ推广功能,否则陌生人向他发送消息会失

2017-07-10 08:49:17 1109

原创 iOS 开发-Xcode中的 workspace, project, target, scheme

project 包含了以下信息:源文件代码的头文件和实现文件 静态库,动态库, 资源文件(如文本,xml,plist等) 图片资源 界面资源文件(xib, storyboard等) 在文件结构的导航中,采用group去组织文件(实际开发中,尽量使用实体文件夹)project的编译级别配置文件如(debug, release) target 运行环境如:debug,test proje

2017-06-30 16:50:14 708

原创 iOS 开发中出现假死解决思路

假死,就是 APP 没有响应,点击界面任何地方都不会有响应,但是又不会闪退的一种现象。结合网上的一些资料和开发经验总结一下常见的原因:1.一个透明的视图盖在了整个界面上在做弹出框,或者遮盖的时候,不要将视图添加到下面的窗口上[UIApplication sharedApplication].windows.lastObject最后一个 window 不一定是你当前显示的 window。请看下面的运行

2017-06-30 09:18:11 4137

原创 iOS -从 AppStore 打开应用程序奔溃

问题描述:当用户更新应用程序后,直接点击 AppStore 上的“打开”按钮发生奔溃。解决过程:1.首先以为是使用 Userdefault 存储版本号出错了。后来经过测试,Userdefault 如果存了一个空值,是不会在 plist 文件里新增一个键值对的,也不会报错。但是给字典存一个 nil,肯定会奔溃的。 2.后来又怀疑切换根视图控制器出了问题。当我设置根视图控制器为引导页视图控制器时,不会

2017-06-14 09:29:47 668

原创 iOS开发 - +load和+initialize方法

当类被引用进项目的时候就会执行load函数(在main函数开始执行之前),与这个类是否被用到无关,每个类的load函数只会自动调用一次.由于load函数是系统自动加载的,因此不需要再调用[super load],否则父类的load函数会多次执行。1.当父类和子类都实现load函数时,父类的load方法执行顺序要优先于子类2.当一个类未实现load方法时,不会调用父类load方法3.类中的l

2017-05-13 17:45:30 477

原创 iOS开发之CLAuthorizationStatus枚举

一、第一个枚举值:kCLAuthorizationStatusNotDetermined的意思是:定位服务授权状态是用户没有决定是否使用定位服务。二、第二个枚举值:kCLAuthorizationStatusRestricted的意思是:定位服务授权状态是受限制的。可能是由于活动限制定位服务,用户不能改变。这个状态可能不是用户拒绝的定位服务。三、第三个枚举值:kCLAuthorizationStat

2017-03-25 09:54:25 1701

原创 iOS的键盘种类(不同的键盘布局)

1.UIKeyboardTypeDefault常用于文本输入2.UIKeyboardTypeASCIICapable常用于密码输入3.UIKeyboardTypeNumbersAndPunctuation主键盘显示如上图,次键盘显示字母4.UIKeyboardTypeURL用于网址输入5.UIKeyboardTypeNumberPad只有数字的数字键盘 (没有符号)6.UIKeyboardTypeP

2017-03-25 09:20:55 1762

原创 iOS 开发中延迟操作

延迟操作的方案一般有三种:1.NSObject的方法:[self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>]2.使用NSTimer的方法:[NSTimer timerWithTimeInterval:<#(NSTimeInterval)#> i

2017-03-11 18:52:19 706

转载 大牛的开发经验总结

`#大牛的开发经验总结1.cocoa pods 常用的frameworkplatform :ios, '7.0'target 'store' dopod 'AFNetworking', '~> 3.1.0'pod 'JSONKit', '~> 1.5pre'pod 'MBProgressHUD', '~> 0.9.2'pod 'SDWebImage', '~> 3.7.6'pod 'SVPu

2017-02-21 11:18:13 612

原创 iOS 开发-CocoaPods的使用 - 到底是pod install 还是 pod update?

使用 CocoaPods 的细节问题对于初学者来说,使用 pod install 或者 pod update 并不会影响大局,所以有的人就习惯了一直沿用自己的更新方式。下面就简单介绍一下这两种更新方式的区别1.pod install :这个是第一次在工程里面使用pods的时候使用,并且,也是每次你编辑你的Podfile(添加、移除、更新)的时候使用。每次运行pod install命令的时候,在下载、

2017-02-10 09:56:08 2619

原创 iOS导入自定义字体,艺术字体

1、将字体资源.ttf文件添加到你的项目中,在Info.plist中添加Array字段 Fonts provided by application 并添加字体文件名(可添加多项)2、在 TARGETS -> Build Phases -> Copy Bundle Resources 添加对应的字体文件3、查找字体名称:NSArray *familyNames = [UIFont familyName

2017-01-22 17:01:57 734

原创 iOS 自动布局框架 – Masonry 详解

Masonry介绍这篇文章只是简单介绍Masonry,以及Masonry的使用,并且会举一些例子出来。但并不会涉及到Masonry的内部实现,以后会专门写篇文章来介绍其内部实现原理,包括顺便讲一下链式语法。什么是MasonryMasonry是一个对系统NSLayoutConstraint进行封装的第三方自动布局框架,采用链式编程的方式提供给开发者API。系统AutoLayout支持的操作,Mason

2017-01-16 08:55:50 775

原创 常用正则表达式

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.

2017-01-07 11:01:49 302

转载 当你把文件存入 Document 时,用 xcode 调试发现路径会变

#在我们的印象中一个路径获取后,下一次再想进此路径只需原路径搜索即可。但在iOS8中,倘若再抱有此思想,我想只会碰壁。1.在iOS8之前,我们获取到沙盒中的document、cache、tmp之后,下一次模拟器或真机无论怎样重启,这具体的路径是固定的了。(下面我们以Document为例介绍)///Users/fanmingyang/Library/Developer/CoreSimulator/De

2016-12-03 11:21:20 1305

iOS-卡片堆叠式布局,无限滑动

基于UICollectionView实现卡片堆叠式布局,无限翻页,无限滑动。 GitHub:https://github.com/Lucky-JY/JYCardView 喜欢的同学可以Star哦,有问题请留言。

2020-10-14

空空如也

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

TA关注的人

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