自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hibiscus_blog的博客

心向远方,何惧未来?

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

原创 iOS中废弃方法DEPRECATED的运用

在ios开发的时候,之前定义的一些属性或者是方法不能满足日益增加的需求,这个时候我们有可能需要改变方法名或者是属姓名。今天为大家介绍一下DEPRECATED_MSG_ATTRIBUTE()的运用Demo 如下:可自行测试=================== .h的内容 ================#import @interface Rain_Model : NSObject-

2018-01-08 14:15:27 7067 1

原创 iOS手机屏幕朝向和简单的获取屏幕方向的方法

1、对于iOS手机屏幕,苹果公司给出了一个枚举。如:typedefNS_ENUM(NSInteger, UIDeviceOrientation) {    UIDeviceOrientationUnknown,    UIDeviceOrientationPortrait,           // 竖向,home键向下    UIDeviceOrientationPort

2017-08-02 10:48:03 5707

原创 如何使用cocoapods制作共有库和私有库

一、共有库1.在github上面新建一个项目2.建立一个项目推送到远端库中3.建立podspec文件 在项目目录文件夹下面,创建podSpec文件(在相应的项目路径下,在终端运行pod spec create SBWorkTool)双击打开podspec文件进行编辑使用命令行:pod lib lint SBWorkTool.podspec成功后会出现:如果有红

2017-05-31 11:19:25 323

原创 swift开发中常用的第三方库

1、Alamofire:http网络请求事件处理的框架2、Moya:这是一个基于Alamofire的更高层网络请求封装抽象层3、Reachability.swift:用来检查应用当前的网络连接状况4、RxSwift:函数响应式编程框架,是ReactiveX的swift版本,可以简化异步操作和事件/数据流5、MonkeyKing:社会化分享框架6、Spring:做动画的框架7...

2019-03-27 15:25:13 468

原创 OC知识点归纳

1、熟悉组件化架构,MVP,MVVM,MVC,Router MVP模式:Model-View——prestenter MVC模式:Model-View-Controller MVVM + RAC模式:RAC提供了统一的数据流动的方式,其扮演传递数据变化信号的角色。 RAC的主要作用: 一、作用于View和ViewModel之间 ...

2019-03-27 15:24:19 372

原创 缓存和内存的理解

缓存可以认为是内存的一部分,但是也不能简单地这样认为缓存是为了解决CPU速度和内存速度的速度差异问题特别提醒:1、因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次再到内存中去取2、因为随着时间的...

2019-03-27 15:23:29 3352

原创 SDWebImage中的缓存机制

SDImageCache:图片采用了二级缓存策略。图片缓存时,在内存有缓存,在磁盘中也有缓存。其中,内存缓存是通过NSCache实现的。它可以执行最高6个队列。缓存步骤:1、将图片缓存在内存中2、判断图片的格式是png或是jepg,将图片转化为NSData数据3、如果是在mac_os系统中,直接将图片转化为NSBitmapImageRep数据4、获取图片的存储路径,其中图片...

2019-03-27 15:22:59 1328

原创 AFNetworking源码解读

1.dispatch_barrier_async函数的使用(栅栏函数)dispatch_barrier_async函数在进程管理中起到一个栅栏的作用,它等待所有位于barrier函数之前的操作执行完毕后执行,并且在barrier函数执行之后,barrier函数之后的操作才会得到执行,该函数需要同dispatch_queue_create函数生成的concurrent Dispatch Queu...

2019-03-27 15:22:24 237

原创 Swift的基本知识(五)

swift方法参数名称省略:swift的这种名称省略,可以通过添加#,_或者是显式地加上标签名称来在调用时强制要求添加或不添加参数名称。但是在大多数时候:我们需要的是普通方法调用和初始化方法调用,对于普通方法,匿名第一个参数,并强制要求其他的参数名称;对于初始化方法,强制要求所有参数使用命名(除非有特殊情况或完全没有歧义的情况下可以省略名称)。这样做有助于保证写出来的方法风格与整个平台统一...

2019-02-12 13:13:56 398

原创 shell学习(2)

1、fold -   限制文件行宽2、fmt - 一个简单的文本格式器3、压缩文件的时候可以用命令行压缩:bzip2 +xxx 或者  gzip +xxx解压缩:bunzip2  +xxx 或者 gunzip +xxx4、程序设计模式自顶向下设计:将一个难以完成的任务化分为无数个小块,然后针对每一个小块进行分工合作,最后完成整个项目5、df -h命令表示磁盘空间的数量...

2018-11-20 18:50:59 190

原创 Shell学习(1)

1.cat - 连接文件2.sort - 排序文本行实例:ls . | sort boy.txtdir1dir2lazy_dog.txtls-error-output.txtls-output.txtpasswd3.uniq - 报道或省略重复行4.grep - 打印匹配行 ( ls . | grep txt 注:打印出txt文本的匹配项)实例:...

2018-07-27 16:43:06 133

原创 利用cocoapods制作共有库和私有库

一、共有库1.在github上面新建一个项目2.建立一个项目推送到远端库中3.建立podspec文件    在项目目录文件夹下面,创建podSpec文件(在相应的项目路径下,在终端运行pod spec create SBWorkTool)双击打开podspec文件进行编辑使用命令行:pod lib lint SBWorkTool.pods

2018-07-11 13:55:09 227

原创 UITableView的header和footer

UITableView section的header和footer高度设置UITableViewStylePlain不实现footer、header设置方法,默认无header、footer;iOS 11< iOS 11viewForHeaderInSection只实现此方法header高度为系统默认只实现此方法header设置无效heightForHeaderInSection只实现此方法...

2018-07-11 13:54:27 1123

原创 读书笔记之“时间角度”

6种时间维度:飞利浦.津巴多    1)过去视角:积极过去视角;消极过去视角    2)现在视角:享乐主义视角;宿命论视角    3)未来视角:未来目标导向视角;未来超验主义视角    对于一个现代人来说,以史为镜,以过去的遭遇和失败,总结失败的教训。对于过去种种的不高兴,我们反思当时的情景,是否能够更好的处理好那件事情?不要总是悔恨过去,我们要学会记住过去,长怀感恩之心。用过去的一些优秀经验来弥...

2018-02-22 17:21:04 341

原创 检测出图片的模糊度

对于图片模糊度检测,我们可以使用opencv技术。现在强大的《美图秀秀》也是利用了其技术。下来,看看如何得出一张图片的模糊度。1、导入opencv库,可手动也可cocoapods导入2、利用opencv中的方法,先将图片转化为cv::Mat格式3、利用opencv中算法,得出图片的方差,标准差,均值进行比较4、利用得到的算法值,确定一个清晰值进行判别是否是清晰图片5、上代码

2018-01-25 11:39:10 4827 5

原创 UIView 和 CAlayer 的关系

CALayer是UIView中的一个属性,我们在给一个view设置圆角,边框,阴影度,偏移度的时候都会用到这个属性。比如: UIView *view = nil; view.layer.borderColor = [UIColorredColor].CGColor;CALayer是QuartzCore库内的类,是iOS上最基本的绘制单元;而UIView只是CALayer之上

2017-09-07 16:38:35 430

原创 OffScreen Render (离屏渲染)

定义:系统的GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染的操作。下面的情况或操作会引发离屏渲染:1.为图层设置遮罩(layer.mask)2.将图层的layer.masksToBounds / view.clipToBounds属性设置为true3.将图层layer.allowsGroupOpacity属性设置为Yes和layer.opacity小于1.04.为

2017-09-07 16:37:54 2504

原创 #pragma clang diagnostic ignored 用法

#pragma 本质上就是声明,一般用来打注释。但是它还有另外一个强大的功能,便是处理警告。用法如下:#pragma clang diagnostic push#pragma clang diagnostic ignored“-相关的命令"               //你自己的代码#pragma clang diagnostic pop常见用法:1.方法弃用

2017-09-01 15:36:35 1690 1

原创 iOS中保持界面流畅的一些小技巧

图像的显示原理:    由CPU计算提交到GPU进行渲染引入到帧缓存区,随后视频控制器会按照VSync(垂直同步信号)逐行读取帧缓存区的数据,经过可能的数模转换传递给显示器显示。CPU资源消耗原因和解决方案:1、对象的创建:对象的创建会分配内存,调整属性,甚至读取文件等操作,比较消耗CPU资源。在创建的时候可以尽量选择轻量级的对象来代替重量级的对象,这样就可以对性能有所优化。比

2017-08-08 15:30:46 453

原创 iOS计算字符的长度

有时我们需要对label进行自适应,就要实时的算出label的长度,即文字所占的长度:+ (CGFloat)getWidthWithString:(NSString *)string font:(UIFont *)font{ NSDictionary *attrs = @{NSFontAttributeName:font}; CGFloat width = [string bo

2017-08-07 13:57:53 726

原创 通讯录联系人跳转

遇到一个通讯录跳转的问题,对于联系人来说,如果只有一个电话号码就直接dismiss返回,否则进入详情页进行选择后返回。在iOS 9.0系统前后可做如下处理: if([[UIDevice currentDevice] systemVersion].floatValue >=9.0){        CNContactPickerViewController *contactCon

2017-08-02 17:22:03 667

原创 让iOS程序长久在后台运行

#import "AppDelegate.h"@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTask;- (void)applicationDidEnterBackground:(UIApplication *)application{ [self startBackgroundUpdateTask

2017-08-01 15:51:25 540

原创 UIView中的transform属性

struct CGAffineTransform {  CGFloat a, b, c, d;  CGFloat tx, ty;};该属性是一个结构体/* The identity transform: [ 1 0 0 1 0 0 ]. */苹果给它定义了一个原有的位置:如view.transform = CGAffineTransformIdentity 就表示v

2017-08-01 15:00:11 464

原创 GCD里面的关键字理解

在iOS 8.0之后,队列的服务质量,系统提供一下参数:QOS_CLASS_USER_INTERACTIVE,    用户交互(希望耗时小,尽快完成操作得到结果)QOS_CLASS_USER_INITIATED, (耗时尽快完成)QOS_CLASS_DEFAULT,(重置队列时使用)QOS_CLASS_UTILITY,实用工具(耗时操作,可选择这一项)

2017-07-28 16:53:18 1124

原创 谓词的使用(NSPredicate)

格式:    NSString *string =@"123";    NSString *checkString =@"123";    NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"self = %@",string];    if([predicateevaluateWithObject:

2017-07-21 15:53:38 506

原创 常用的正则表达式

我们在开发的时候,很多时候都会用到正则表达式。它的便利,我就不多说啦!下面是一些常用的正则表达式,希望对各位有用。手机号:"(\\+\\d+)?1[34578]\\d{9}$"邮箱:"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"全数字:"^[0-9]*$"全小写字母:"^[a-z]+$"全大写字母:"^[A-Z]+$"身

2017-07-21 13:41:55 204

原创 iOS中权限的总结

1、关于照相机的权限分类(麦克风,录像机)typedefNS_ENUM(NSInteger, AVAuthorizationStatus) {    AVAuthorizationStatusNotDetermined =0,//默认选项,表示暂时没有选择客户端访问硬件    AVAuthorizationStatusRestricted,//客户端未被授权访问媒体类型  

2017-07-17 15:03:58 613

原创 iOS中常见的几种函数(向上,向下,四舍五入)

针对于iOS中的一些数学函数,我们有时会根据不同的需求需要不同的数值哦。(1)向下取整 floor函数如: floor(5.3) == 5,floor(5.7)== 5(2)向上取整 ceil函数 如:ceil(5.4)== 6, ceil(5.8)== 6(3)四舍五入 round函数如:round(5.3)== 5, round(5.6)== 6

2017-07-10 11:42:04 380

原创 针对UITextView设置placeHolder解析

对于UITextView,很多人在使用的时候,都会为了它没有placeholder属性而苦恼,现在就让我们一起给出几种方案:(1)采用绘制的方式来添加一个placeHolder的字符串属性。用一个字符串记录placeholder的内容,以及在什么时候需要绘制的一个bool值。核心代码:- (instancetype)initWithFrame:(CGRect)frame{ self

2017-07-06 16:00:50 353

原创 git常用命令行

git push -f xxx  master 强制推动道远程分支       git tag xxx  添加标签       git push —tags  推送标签到远程       git tag -d  xxx  删除tag        git remote remove xxx 删除远程信息   mkdir:         

2017-05-27 14:29:58 325

原创 ios中的静态库和动态库制作的一些小知识

在我们接触iOS的时候,我们就知道,在编写程序的时候,我们会遇到开源库和一些闭源库。今天就让我们一起讨论一下闭源库的实现。        在iOS中实现库的操作有这么几种方式,制作.a、.framework库。在使用这些库的时候,我们只会看到它所声明的文件,即.h文件。.m文件被转换成二进制代码封存在模块里面。这样就有效的保证了系统的安全性能,也保护了自己的代码不被泄漏。        动

2017-05-23 14:11:45 242

原创 Swift的基本知识(四)

1、在oc中,我们熟知的block,并且很好的进行运用,但是在swift中它有一个崭新的名字叫做“闭包”。 let names = ["bob","joc","Jemm","work","person","people"] print(names.sorted()) //对数组中的数进行排序 func sortBy

2017-05-17 14:23:44 242

原创 Swift的基本知识(三)<可选类型?和隐式可选类型!>

在swift中,可选类型的根源其实是一个枚举类型,里面有some和none两种类型。其实就是所谓的nil就是optional.some,非nil就是optional.some。然后会通过some(T)包装(wrap)原始值,对其进行拆包的过程。这里对enum optional的定义: enum Optional : LogicValue, Reflectable { ca

2017-05-17 10:32:11 551

原创 Swift的基本知识(二)

1、枚举类型。swift中的枚举比oc里面的枚举更加的宽泛,不一定只简单的支持int数据类型,还扩展了其他数据类型//定义枚举enum swiftEnum { case OC_Enum case SWIFT_Enum case HISTORY_Enum}//重定义枚举类型typealias swiftCategory = swiftEnum //枚举

2017-05-15 15:12:52 280

原创 神奇的一句话引发的思考

今天在看简书的时候,突然发现一个很有意思的标题。什么话可以让高兴的人听了不再高兴,悲伤的人听了不再悲伤?觉得很有意思,就想着随便写几句。我们大多数都是平凡的,生活对于我们来说就好像一片汪洋大海。我们时而扑腾,时而跌宕。我们能做的就是着眼当下,无愧于心。我们大多数都是幸运的,虽然有时会有很多忧伤,但是生活不会忘记你。在关闭这扇窗的同时会打开另外一扇门。我们大多数都是渺小的,作为一个普通的

2017-05-15 13:15:21 268

原创 Swift的基本知识(一)

1、常量与变量的定义在swift中,常量的命名用let关键字来创建,变量的命名用关键字var来创建 //常量的命名 let name = "HelloWorld" print("常量是:\(name)") //变量的命名 var nickName = String() nickName = "Bird

2017-05-15 13:09:56 304

原创 iOS中的沙盒机制

在iOS开发中有三个存放数据的文件夹:Documents,temp和library/cache。Documents:主要存放系统文件,和一些较大的文件。iTunes在备份和恢复的时候会包含此目录。temp:主要存放临时文件,iTunes在备份和恢复的时候不会回复此目录,在应用重启的时候里面的文件也会不存在。library/cache:主要存放缓存文件,iTunes不会备份此文件,文件内

2017-05-12 13:20:29 287

原创 UIWebView的第三种加载数据的方法

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL; UIWebView *webView = [[UIWebViewalloc]initWithFrame:[U

2017-05-10 14:54:18 379

原创 sourceTree的研究

1、sourceTree的简介    sourceTree是一个拥有可视化界面,容易上手的Git客户端,也是一个轻量级的版本控制系统工具。可支持创建,提交,clone,push,pull,merge等操作。2、sourceTree的基本使用    (1)拥有一个git账户,可供建立自己的远程仓库。    (2)下载sourceTree客户端,利用https网址对远程

2017-05-10 11:23:56 470 1

原创 siri研究

1.siri开发适合那些类型的APP:健身类,通讯类,支付类,图片浏览,语音搜索图片,打车预定Calls Domain    语音和视频通话CarPlay& Radio Domains  行程预约Messages Domain 发送信息Payments Domain 收款或付款Workouts Domain 管理锻炼Photos Domain和Ridesharing

2017-05-09 14:57:19 719

空空如也

空空如也

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

TA关注的人

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