自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿飞小伙子_博客

个人技术积累和感受总结

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

原创 ReactiveCocoa使用详解-1

ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的函数式响应式编程框架,它提供了一系列用来组合和转换值流的 API一. 什么是响应式变成思想?学习一个框架之前, 首先要了解这个框架的编程思想, 这里在介绍响应式编程思想之前, 先介绍一下之前接触过的编程思想1.面向对象万物皆对象是一类以对象作为基本程序结构单位的程序设计语言典型的面向对象的编程...

2020-02-04 21:34:53 212

原创 关于MD5

写在前面最近把一个在处理关于Md5的一些代码对了NSData(Data)加密处理,然后进行校验在这里做一个总结。开始头文件必须要引入#import <CommonCrypto/CommonDigest.h>import CommonCrypto1、NSData MD51.1、OC@implementation NSData (MD5)- (NSString ...

2019-09-06 17:08:01 472

原创 + (void)load和 + (void)initialize

+ initialize和 + load是 NSObject 类的两个类方法,它们会在运行时自动调用,我们可以利用其特性做一些初始化操作。initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize...

2019-07-10 16:56:17 288

原创 关于Class

Class 的含义typedef struct objc_class *Class; typedef struct objc_object { Class isa; } *id; typedef struct objc_selector *SEL; typedef id (*IMP)(id, SEL, ...);Class 被定义为一个指向 objc_c...

2019-06-24 09:25:43 175

原创 CocoaPods简单总结

写在开头这篇文章主要是用来总结CocoaPods的一些常见使用方法,还会补充一些常见问题的解决办法1、什么是gem?Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。gem软件包数据源(意思就是从哪里下载软件)//google https://rubygem...

2019-06-23 22:55:06 156

原创 IOS 排序算法

写在前面排序算法写在创建的NSMutableArray分类中,因此self代表我们待排序的数组;算法兼容了升序与降序两种情况,根据输入的isAcs来判断是升序或者降序NSMutanleArray中存放都是对象,对于基本类型的排序对象,对应的是NSNumber或NSString,对数据进行比较的时候要使用compare,不能直接使用>、<、==#import "NSMutabl...

2019-06-23 22:52:29 201

原创 UITableView优化

UITableView 的优化主要从以下3个方面分析:基础的优化准则(高度缓存, cell 重用…)学会使用调试工具分析问题异步绘制基础的优化准则1、正确地使用UITableViewCell的重用机制UITableView最核心的思想就是 UITableViewCell 的重用机制。UITableView 只会创建一屏幕(或一屏幕多一点)的 UITableViewCell ,每当...

2019-06-23 22:40:59 1027

原创 常见问题汇总

写在最前面这些问题算是平时的一个总结积累,放在这里随时更新和查询使用atomic一定是线程安全的吗?答:atomic能够保证数据的完成性,也就是说他只是读写安全,并不能准确定义说他是线程安全的。因为线程可以对数据做很多操作,包括读写,还有release、retain,假如说对一个已经释放的对象进行release,就会导致crash@synthesize和@dynamic的区别答:@s...

2019-06-23 22:38:24 278

原创 IOS视图生成图片

写在前面总是会遇到一些需求:对UIImage进行重新绘制、将UIView绘制成UIImage、截屏SDWebImage,在将网络图片下载完成以后就对图片进行了重新绘制(解压缩)。iOS10以上UIGraphicsImageRendererFormat *format = [[UIGraphicsImageRendererFormat alloc] init];format.prefers...

2019-06-23 22:28:11 1442

原创 WebImage的获取Image

最近忙碌图片合成视频的需求,在该需求中,需要使用到网络图片SDWebImage提供了简练的API获取网络图片,但是主要实现是直接把图片给UIImageView但是,如果只想要下载和获取Image,没有现成的简单API可以使用;最近又阅读了SDWebImage的源码,换种方法可以实现。1.在主线程有一种很简单的办法获取到这个图片,这个方法不是很"美观",但是用起来很方便__block UI...

2019-06-23 22:25:35 1161

原创 SDWebImage源码解析

一、准备知识在正式学习源码前,先讲一些SDWebImage中用到的生僻知识点,有些用的很频繁,但是很多人对这些知识点模糊不清,如果不搞清楚会大大影响阅读效率,比如枚举NS_OPTIONS的二进制位运算。1. NS_OPTIONS与位运算NS_OPTIONS用来定义位移相关操作的枚举值,当一个枚举变量需要携带多种值的时候就需要,我们可以参考UIKit.Framework的头文件,可以看到大量的...

2019-06-21 15:23:38 494

原创 Block 阅读笔记

https://www.jianshu.com/p/25a7ba546eachttps://www.jianshu.com/p/4e79e9a0dd82看了"小胖白兔"的两篇关于Block的文章,感觉获益良多。再次总结一下阅读笔记,便于自己查看1、Block是什么Block本质上也是一个OC对象,是封装了函数调用以及函数调用上下文环境的OC对象2、Block有哪几种Block的类型...

2019-06-21 14:38:58 198

原创 IOS开发定时器

写在前头在开发过程中,总是会遇到这样的需求:循环更新、处理,延时处理等事件。在这里总结了一些常用的延时和按时更新的用法dispatch_afterdispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ ...

2019-06-14 23:39:08 826

原创 IOS多线程

1、进程与线程1.1 进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内1.2 线程1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程,称为主线程)一个进程(程序)的所有任务都在线程中执行1.3 进程和线程的比较1.线程是CPU调用(执行任务)的最小单位。2.进程是CPU分配资源的最小单位。3.一个进...

2019-06-02 16:24:11 1347

原创 IOS NSDictionary原理

写在前面关于NSDictionary,是日常开发中经常用到的空间,但是关于它的实现原理,很少去研究。在这里做一个总结字典的底层实现还是依靠HashMap,HashMap 的本质上市 数组 + 链表HashMap1、HashMap的实现HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。HashMap的主干是一个Entry数组HashMap...

2019-06-02 01:04:44 736

原创 AWS S3服务

写在开头最近工程中做了一个视频上传的相关需求,使用了亚马逊AWS S3服务作为存储,关于IOS的资料比较少,也填了不少坑,这里总结一下:S3服务Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。自己去查官网吧:https://aws.amazon.com/cn/s3/...

2019-05-21 11:49:51 4610 2

原创 NSString字符高亮算法

写在开头在开发过程中,遇到的一些算法问题,写在这里记录一下一、高亮规定字符串//搜索匹配算法//高亮<em></em>中间的字符串//NSString *aString = @"I am a <em>string</em>, not a a<em>string</em>, just a <em&...

2019-05-11 23:18:40 345

原创 NSMutableString的用法

写在开头之前一篇文章总结了NSString的用法,这里简单总结一下NSMutableString作为补充,之后还有NSMutableAttributedString的用法。如果一个字符串需要经常改变,可以使用NSMutableStringNSMutableString是NSString的子类,所以,NSString的方法,NSMutableString都可以用一、常见用法...

2019-05-11 23:18:33 2442

原创 NSString用法总结

写在开头最近踩了多个string的坑,嗯嗯!还是要抽时间总结一下的,顺便在后面写几个自己写的或者学习别人的算法1、NSString的创建//使用字面量创建字符串NSString *string_0 = @"afeixiaohuozi"; //使用类方法创建字符串NSString * string_1 = [NSString string];string...

2019-05-11 23:18:20 7268

转载 iOS图像显示原理

该文章是在看到的一篇公众号文章,拿过来总结分享一下一、图像显示各组件分工:CPU:计算视图frame,图片解码,绘制纹理交给GPU。GPU:纹理混合,顶点变换,渲染到帧缓冲区。时钟信号:垂直同步信号V-Sync / 水平同步信号H-Sync。iOS设备双缓冲机制:前/后帧缓冲区。CRT:阴极电子枪发射电子,在阴极高电压的作用下,电子由电子枪射向荧光屏,使荧光粉发光,将图...

2019-05-10 10:51:15 594

原创 UINavigationController使用详解

一、假装一本正经的概括一下UINavigationController用来管理视图控制器,在多视图控制器中常用。它以栈的形式管理视图控制器,管理视图控制器的个数理论上不受限制(实际受内存限制),push和pop方法来弹入弹出控制器,最多只能显示一个视图控制器,那就是处于栈顶的视图控制器。一般情况下,UINavigationController最少管理一个控制器,即最少有一个根视图控制器...

2019-05-10 10:43:17 360

原创 ios开发之切换RootViewController

写在开头最近做需求开发,在登陆请求返回后需要填写一些基本信息,然后再显示主页面显示登录界面时创建了RootViewController显示主页面的时候,以Tabbar作为新的RootViewController切换RootViewController以后,页面看起来没有什么问题,查看层级关系发现原来的界面并没有释放,造成了内存泄漏1.pushViewController...

2019-05-01 11:01:31 6491

原创 IOS APP内后台音乐播放

写在开头最近做了IOS音频、音乐后台播放相关的需求,这里主要总结一下支持后台播放以及远程控制的一些用法,在这个过程中也遇到了一些问题,会在另一个博客里面进行总结。一、后台权限申请1、在Info.plist文件中里设置选项Required background modes ,然后添加item0:App plays audio or streams audio/video usin...

2019-05-01 10:36:26 6058

原创 一点点小问题

写在开头在开发的过程中,总是会遇到一些问题,在解决了以后,还是需要做个总结,方便以后进行查看这个地方不用来总结什么问题,仅仅用来记录一些方法!会持续更新、添加1、当前View不响应手势有些需求,例如点击(拖动)添加的蒙层,该蒙层不需要响应该事件,让下一层级的View响应该事件- (UIView*)hitTest:(CGPoint)point withEvent:(UI...

2019-05-01 00:42:13 166

原创 支持后台播放的音频、视频开发中遇到的问题

1、音频想要支持后台播放,需要进行一些设置,申请响应的后台权限:附后台播放设置链接2、因为APP内有视频课程,所以申请了后台权限以后视频也可以后台、锁屏播放(播放视频的声音),这里需要根据自己的需求单独进行处理。3、申请后台、锁屏播放以后,主要的问题就是通知中心的控制问题,特别是当视频和音频同时存在时,需要进行相应的处理,才能展示出想要的效果。MPNowPlayingInfoCent...

2019-04-30 19:22:05 2924 1

原创 NSRange使用方法总结

*******这篇文章是在总结NSCharacterSet文章时用到了相关属性,算是那篇文章的一个补充**********NSRange是Foundation框架中比较常用的一种结构体,用来表示事物的一个范围.通常是字符串里的字符范围或者数组里的元素范围。 typedef struct _NSRange { NSUInteger location; //...

2018-11-24 22:27:04 1941

原创 NSCharacterSet使用方法总结

需求中需要限制UITextField的输入和粘贴内容,特此总结相关用法,以备以后查询使用1、常用的创建NSCharacterSet的类方法系统提供的快捷创建方法://获取所选字符串以外的的内容@property (readonly, copy) NSCharacterSet *invertedSet;//相反字符串限制[NSCharacterSet controlCha...

2018-11-24 22:15:35 1115

原创 UITextView使用方法

最近使用UITextField 和 UITextView 。对于其相关内容进行了一些总结,主要方便自己以后的使用UITextView:能输入多行,可以滚动显示浏览全文,不可以设置提醒文字(没有placeholder属性),无占位,继承自UIScrollView。UITextView的常规方法//初始化UITextViewUITextView *textview = [[...

2018-11-17 21:51:06 409

原创 UITextField使用方法

最近使用UITextField 和 UITextView 。对于其相关内容进行了一些总结,主要方便自己以后的使用UITextField :只能输入一行,不可以滚动显示浏览全文,可以设置提醒文字(有placeholder属性),有占位,继承自UIView[UIControl]。UITextField的常规设置//初始化textfield并设置位置及大小UITextField ...

2018-11-17 21:20:58 294

原创 UIButton的压缩与拉伸动画

本文主要完成UIButton的一个拉伸与压缩动画压缩动画:将半圆角的的按钮压缩成圆形按钮(背景波纹动画单独完成)拉伸动画;将圆形按钮拉伸成半圆角Button注:压缩和拉伸过程装,要保证圆角不变形初始状态:初始状态/结束状态 压缩状态:压缩后状态 代码如下: //带圆角的UIButton压缩成圆形//圆形UIButton拉伸成带圆角...

2018-11-04 11:21:49 545

原创 IOS粒子系统

 CAEmitterLayer提供了一个基于Core Animation的粒子发射系统,粒子用CAEmitterCell来初始化。粒子画在背景层盒边界上1、CAEmitterLayer:emitterPosition//决定了粒子发射形状的中心点,​emitterSize    //则决定了粒子发射形状的大小,​emitterShape   //是粒子从什么形状发射出来,...

2018-11-04 10:36:45 337

原创 tableview的一个适配问题

IOS11以后,创建的scrollView机器子View会被系统自动适配,导致tableview向下偏移self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;1、IOS11新增属性scrollView在iOS11新增的两个属性:adjustContentIns...

2018-11-04 10:25:19 514

原创 NSDate使用方法

刚刚做IOS开发第一个需求的时候,需要判断是否为同一天,最近需求需要判断两个日期是否为同一周,在网上没有找到合适的方法,自己写了一个,目前用着还行。相关方法链接(待补充)NSDateNSDateFormatterNSDateComponentsNSDateComponentFormatterNSCalendar1、NSDate的常用方法1.1初始化方法//...

2018-11-04 10:13:55 243

原创 Git的使用方法

本文主要是自己工作中关于git常用命令的总结,并不具有权威性1、提交代码的流程git checkoutv916//切换到916分支​git status //查看代码状态(被修改的文件)   git diff//查看修改的具体代码​git add.    // 添加所有的代码​git commit -m"需求名称"​git pull --rebase   gi...

2018-11-04 09:56:43 191

原创 @property指示符

在声明属性的时候一般会带上几个指示符,常用指示符有:声明属性的一般顺序是:线程安全、访问权限、内存管理//线程安全atomic/nonatomic //访问方式readwrite/readonly//内存管理assignstrongweakcopyunsafe_unretainedretainatomic/nonatomic指定合成存取方法是否为原...

2018-11-03 22:18:03 105

原创 2Sum问题扩展解析

最近在刷一道算法题,在使用OC解决该问题后对题目进行了扩展和解析,看看是不是可以解决所有的变化情况1、先看题目题目:“给定一个整形数组中有且只有两个数之和等于目标值,求这两个数在数组中的序号”解题思路:常规的方法是进行两层的遍历,找到两个数相加等于目标值,时间复杂度是O(n^2)。我们直接选择时间复杂度为O(n)的算法:将数组的下标作为value,该下标对应的值作为key,存贮...

2018-11-03 21:24:53 242

空空如也

空空如也

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

TA关注的人

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