自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (5)
  • 收藏
  • 关注

原创 iOS 正确设定背景图片

在View里放背景图片就像很多其它iOS编程一样有很多方法:使用UIColor的 colorWithPatternImage来设置背景色;在view中添加一个UIImageView作为一个子View。如果你使用全画幅的背景图,你就必须使用UIImageView,因为UIColor的colorWithPatternImage是用来创建小的重复的图片作为背景的。这种情形下使用UIImageView可以节约不少的内存:// You could also achieve the same result in

2020-08-26 14:53:52 520

原创 iOS 性能优化指标

CPU占用率对象创建:对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU 资源。对象调整:对象的调整也经常是消耗 CPU 资源的地方;对象销毁:对象的销毁虽然消耗资源不多,但累积起来也是不容忽视的。布局计算:视图布局的计算是 App 中最为常见的消耗 CPU 资源的地方;Autolayout:Autolayout 是苹果本身提倡的技术,在大部分情况下也能很好的提升开发效率,但是 Autolayout 对于复杂视图来说常常会产生严重的性能问题;文本计算:文本的宽高计算会占用

2020-08-26 14:51:06 656

原创 iOS 圆角优化实现代码

官方对离屏渲染产生性能问题也进行了优化:iOS 9.0 之前UIimageView跟UIButton设置圆角都会触发离屏渲染。iOS 9.0 之后UIButton设置圆角会触发离屏渲染,而UIImageView里png图片设置圆角不会触发离屏渲染了,如果设置其他阴影效果之类的还是会触发离屏渲染的。在APP开发中,圆角图片还是经常出现的。如果一个界面中只有少量圆角图片或许对性能没有非常大的影响,但是当圆角图片比较多的时候就会APP性能产生明显的影响。我们设置圆角一般通过如下方式:imageView.

2020-08-26 14:39:59 326

原创 使用GCD中的栅栏函数实现多读单写功能

多读单写的意思就是:可以多个读者同时读取数据,而在读的时候,不能取写入数据。并且,在写的过程 中,不能有其他写者去写。即读者之间是并发的,写者与读者或其他写者是互斥的。这里的写处理就是通过栅栏的形式去写。 就可以用 dispatch_barrier_sync(栅栏函数)去实现dispatch_barrier_sync: (提交一个栅栏函数在执行中,它会等待栅栏函数执行完)dispatch_barrier_async:.(提交一个栅栏函数在异步执行中,它会立马返回)而 dispatch_barri

2020-08-26 14:36:43 1384

原创 iOS 优化app的电量

程序的耗电主要在以下四个方面:CPU处理定位网络图像优化途径主要体现在一下几个方面尽可能降低CPU/GPU的功耗尽量少用定时器优化I/O操作不要频繁写入小数据,而是积攒到一定数量再写入读写大量的数据可以使用 Dispatch_io ,GCD 内部已经做了优化。数据量比较大时,建议使用数据库网络方面的优化减少压缩网络数据 (XML -> JSON -> ProtoBuf),如果可能建议使用 ProtoBuf(数据序列话处理)如果请求的返回数据相同,可以使用

2020-08-26 14:33:54 278

原创 react-native 节流和防抖函数

debounce去抖:使用场景例如:一个搜索框,输入1,请求数据得到包含1的数据;再输入2,得到包含12的数据…假如用户想得到1234的数据,就要调用4次接口得到,浪费请求资源,本地数据渲染也会走多次。 debounce可以解决此问题/*this.getData 请求方法500 延迟时间option 配置lodash在opitons参数中定义了一些选项,主要是以下三个: leading,函数在每个等待时延的开始被调用,默认值为false trailing,函数在每个等待时延的结束被调

2020-08-26 14:31:09 1491

原创 ReactNative 函数绑定区别

bind绑定将点击方法函数与onPress绑定在一起 onPress={this.show.bind(this.xx)} 或者在生命周期函数里绑定 constructor(props) { super(props); this.test = this.test.bind(this) }注意 如果在绑定时不执行bind方法 直接执行onPress={this.show} 则会在ReLoad时直接执行函数也就是说,没有bin

2020-08-26 14:27:01 109

原创 虚拟DOM 和DOM diff算法

DOM diffDIFF算法在执行时有三个维度,分别是Tree DIFF、Component DIFF和Element DIFF,执行时按顺序依次执行,它们的差异仅仅因为DIFF粒度不同、执行先后顺序不同。Tree DIFF:是对树的每一层进行遍历,如果某组件不存在了,则会直接销毁Component DIFF:第二层进入Component DIFF,同一类型组件继续比较下去,发现A组件没有,所以直接删掉A、B、C组件;继续第三层,重新创建A、B、C组件。Element DIFF紧接着以上统一类型组

2020-08-26 14:24:24 146

原创 ReactNative显示优化

减少Bundle包的大小关于如何减少Bundle包的大小,目前主流的方法是拆分Bundle包,把框架代码和业务代码单独出来,框架代码非常大,因此要分离出来单独前置加载,而业务代码则变成很小的JS代码单独发布,下面提供一些前人的经验链接那么进入App后的性能点又在哪里呢?还是回到Bridge首先,在苹果和谷歌两位大佬的光环下,native代码在设备上的运行速度毋容置疑,而JS作为脚本语言,本来就是以快著称,也就是说两边的独立运行都很快,如此看来,性能瓶颈只会出现在两端的通信上,但两边其实不是直接通信..

2020-08-26 14:19:11 200

原创 升级Xcode11后,运行ReactNative项目报错 (__attribute__((__unused__)) 以及编译报错

果然 Xcode每次更新都会出各种幺蛾子,昨天晚上更新到Xcode11后,就发现RN项目编译报错,和启动报错,可是勤劳的中国人民总会找到各种解决方法。编译报错出现 unexpected duplicate task: ********的问题,方法一:File -> workspace settings,选择Legacy Build System。旧的build方式即可方法二:需要...

2019-10-08 11:08:30 1091

原创 ReactNative 移动与点击手势冲突解决办法与拖动view的及时更新

这段时间根据业务需求,需要在一个界面上code一个可以随意滑动和点击的按钮,类似于iPhone的小圆点,功能就是点击时跳转界面,滑动是可以在界面上拖动。功能设计还是比较简单的,但是在实际code的过程中就发现了许多RN的坑,所以记下来方便大家避坑。我的RN版本是0.43.4版本的如何使用手势在这个需求里,需要实现拖拽和点击两种手势,我之前是使用一个 TouchableOpacity 包裹...

2019-01-15 17:04:11 7106 4

转载 iOS界面性能优化(转)

概述 对于界面的性能优化, 简单的说就是保持界面流畅不掉帧, 当然原理这种网上一搜一大把, 有空的话看看YYKit也就能够知晓个大概. 硬是要说原理的话, 就是当Vsync信号来临的16.67ms内CPU做完排版, 绘制, 解码, GPU避免离屏渲染之类的, 就会在Runloop下一次来临的时候渲染到屏幕上.预排版 对于界面流畅, 第一个想到的就是预排版了, 而且预排版的作用显著, 原理也...

2018-07-10 10:17:57 753

原创 ReactNative 使用Rushy热更新走过的坑

这段时间研究了下Rushy热更新ReactNative应用,走了许多坑,这里就把流程写一下吧。我只使用了iOS的热更新,所以Android的坑就不知道,见谅。这里将所有的安装命令就在这汇总下,具体的可以看其他博主的文章常用命令汇总:// 第一步 安装模块npm install -g react-native-update-cli rnpm(一台机子执行一次)npm install --...

2018-05-08 18:28:24 1183 1

原创 ReactNative调用OC原生

这段时间研究了一下ReactNative调用原生OC的功能,在网上查了些资料,不过感觉还不是很完整,所以在这里把所有流程写下来,供大家参考 step1:要想RN调用原生,必须先从终端下载一个RN的简单模板,方法就不在这里说说,具体的看RN官网step2: 在进入下载完成的文件 里面iOS文件里就是可以用xcode打开,App.js文件就是RN里面的内容step3: 打...

2018-03-07 17:52:16 2749

原创 使用UIWindow实现iOS应用屏保功能

屏保功能这个需求是为了演示用的,本来是想找App Store直营店那些测试机 长时间不动,就会自动播放一个动态图,然后点击就消失的功能。但是找了许久,也没找到类似的,哪怕一点点。。。 忧郁 随,还是自己做吧。求人不如求自己首先 这个功能是为了能随时弹出来,所以肯定是要present一个VC。其次就是触发方式,在任何界面,长时间不动就会弹出来,所以要有个定时间。(定时器的就是我之前的blog

2018-01-19 17:22:20 928

原创 使用GCD 实现倒计时功能

前段时间需要实现倒计时功能,找了一下网上用NSTimer的比较多,但是实际上,NSTimer的计算倒数不准确,NSTimer受runloop的影响,由于runloop需要处理很多任务,导致NSTimer的精度降低。所有就考虑用GCD来实现此功能。实现后发现确实比NSTimer准确,而且也不麻烦,不废话 上代码。先创建一个source源@property (nonatomic, strong

2018-01-19 15:02:57 1507

原创 自动点击按钮(即自动触发点击事件)

这段时间做项目,有一个特殊的需求,就是界面上有一个按钮,需要自动去触发。 找了下资料,发现有个api是可以完成的 就是:sendActionsForControlEvents 这个 下面就是使用方法[Btn sendActionsForControlEvents:(UIControlEventTouchUpInside)];执行了这段代码后,就会跑去执行Btn之前定义的@select

2018-01-19 14:39:34 29825

原创 iPad上调用相机问题

这段时间做了一个简单的iPad应用,其中发现有些东西和手机上的还是有区别的,就比如相机的调用。正常在iPhone上写调用相机时UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; if ([UIImagePickerController isSourceTypeAvail

2018-01-03 17:02:53 2518

原创 代码感悟(1)

好久没有写博客了,刚刚看到了一篇文章,大概是讲如何提升自己并获得更高的收入。突然觉得,想要在这条路上走下去,靠的应该不仅仅是coding的能力,还有对未来的一些规划。 前段时间,刚去杭州某大行互联网公司进行了合作开发,接触到ReactNative混合开发模式,之前也了解过,不过没有认真深入的去学习。不过这次合作,不仅让我见识了大型公司的开发模式,而且也认识了几个只能在知乎看到

2017-12-21 17:33:57 220

原创 TableView的Cell中有Textfield、TextView时放置键盘遮挡输入框

当cell里面有textfield或者textview的时候

2016-12-05 17:17:55 3681 1

原创 使用AFN 进行多次循环网络请求,如何判断何时请求完成

使用AFN 进行多次循环网络请求

2016-12-05 17:05:39 6072 1

转载 iOS 开发之照片框架详解之二 —— PhotoKit 详解

一. 概况本文接着iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLibrary 封装出通用的方法。 这里引用一下前文中对 PhotoKit 基本构成的介绍: PHAsset: 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源 P

2016-07-14 16:58:43 708

转载 iOS 开发之照片框架详解

一. 概要在 iOS 设备中,照片和视频是相当重要的一部分。最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法。在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则但确实强大的框架,考虑到 iOS7 仍占有不少的渗透率,因此 AssetsLibrary 也是本文

2016-07-14 16:30:37 393

原创 将时间戳装换为时间&&将时间装换为几天前

不废话,上干货将时间戳转换为具体时间-(NSString*)getTimeStringWithSp:(NSString *)sp{ NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; formatter.timeZone = [NSTimeZone timeZoneWithName:@"beijing"];

2016-06-23 15:30:20 729

原创 运用通知实现点击非键盘处回收键盘

上次项目遇到一个小问题,就是textview差不多有半个屏幕一样大,当键盘弹起的时候,就没有空白位置实现点击回收键盘,这样子用户感觉不好,所以借鉴了一点别人的方法,就是监听键盘的弹起,每当弹起的时候,创建一个透明的View 给View添加一个手势,在手势在手势的方法里,实现键盘的回收,并且移除该view和手势,最后切记,dealloc中移除通知,防止循环引用。 不废话,上代码

2016-06-23 15:21:18 184

原创 iOS 项目中出现内存警告

这次项目中 由于没考虑到内存问题,就十分不幸的出现了传说中的内存警告⚠️ 所以 以后小伙伴们以后一定要注意内存使用问题啊!! 好了,言归正传。我这次出现内存警告的原因就是在tableview中展示图片的时候都是从后台传来的原图,刷了几下缓存就快到20M了,所以马上控制台就打印出了内存警告。。。第一次还不知道,第二次就直接crash了。。。泪崩啊 由于后台都直接传的原图的U

2016-06-23 15:10:51 2860

转载 JSON和XML解析等区别

1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标准

2015-12-12 18:02:31 341

转载 AFNetWorking的实现分析以及简单使用

以下就是cocospod中AFNetworing除了几个分类外的所有类。类库的头文件AFNetworking.h引入了下面的所有类库,并可以根据不同的系统使用不同的实现方式。下面大体介绍下每个类的大致作用,主要以翻译API的注释文档为主。1:AFURLConnectionOperation 可以说是AFN最基础的类。继承自NSOperation类,将网络请求依附到一个operation上。从而让我

2015-12-03 20:56:46 267

转载 SDWebImage内部实现过程

SDWebImage内部实现过程(新版本在各方法前加上了sd_前缀,以区分UIImageView+AFNetworking中的方法)1.入口 setImageWithURL:placeholderImage:options:会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。2.进入 SDWebImageManager-downloa

2015-12-03 20:32:17 258

转载 敏捷开发流程(转)

Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以达到管中窥豹的目的。  敏捷开发宣言—— 个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划 虽然右项也有价值,但是

2015-11-24 19:58:40 323

原创 Swift 试炼(1)

这几天学习了一下苹果在14年推出的新语言—Swift ,总体感觉比OC简单了不少,但是还是感觉有点不习惯,比如就是var和let,本来声明一个可变数组用var没问题啊,但是编译就是要出个警告,改成let,这就有点不理解了…. 还有就是强转用 as! 还是 as 也是有点不明白…. 最重要的一点就是Xcode升级到7.0以上的时候,Swift也改变了许多,我在网上找的许多东西也好像不能用了…坑爹啊,

2015-11-18 22:12:06 345

转载 ViewController 瘦身的另一种解决方案(转)

原文: http://www.cocoachina.com/ios/20151116/14010.html 由于本人是学的不多,但是看这篇还是有许多技术含量的,就发出来给大家分享~~对于Massive View Controller,现在流行的解决方案是MVVM架构,把业务逻辑移入ViewModel来减少ViewController中的代码。这几天又看到另一种方案,在此介绍一下。 例子: 我们

2015-11-16 20:34:02 292

原创 iOS 面试题 集锦(3)

昨天又看到几个题,感觉容易记混的,下面来干货!!41 cocoa和 cocoa touch?(表示都听过,就是不知道什么区别。。) cocoa包含Foundation和AppKit框架,可用于开发Mac OS X系统的应用程序 cocoa touch包含Foundation和UIKit框架,可用于开发iPhone OS 系统的应用程序 Cocoa时Mac OS X的开发环境,cocoa Tou

2015-11-16 20:20:40 337

转载 MVVM设计模式介绍(转)

在之前的阅读中,我发现了一个新的框架:MVVM, 是不同与常用的MVC框架(或许已经不新鲜了吧。。) 在这里就附上它的基本介绍 下面就是所转内容有时我感觉就像我不知道在做什么。虽然我知道自己的设计模式——就像任何好的编程人员那样 —— 但我太接近我在做的产品以至于不能客观地衡量我的架构决策的有效性。当队伍中来了另外一位开发者时,我意识到我们陷入困境了。从没听过 MVC ?有人称之为 Massiv

2015-11-14 21:26:41 813

原创 iOS面试题 集锦(2)

今天就来接着昨天的写啊!!21 深拷贝和浅拷贝的区别 浅拷贝(copy)是只能复制指向对象的指针,而不复制引用对象本身,通过对象的指针来访问对象,只是赋值地址 深拷贝:复制引用对象本身—再创建一个对象,两个对象独立 相互不影响。22 什么是安全释放 先将对象release 再置为nil23 RunLoop是什么 事件循环,是线程里面的一个组件.主线程的RunLoop是自动开启的.分为:计时源

2015-11-14 16:54:01 253

原创 imageNamed 与 imageWithContentsOfFile的区别

昨天在逛知乎的时候,发现了一个以前还没有注意到的问题,就是加载图片的时候是用imageNamed还是iamgeWithContentsOfFile,当时我就愣了一下,后者不是在加载文件的时候用的吗?也可以加载图片啊。。 后来查阅资料后发现,原来两者确实在加载图片的时候有区别啊,下面就是我找到的资料,仅供参考。myImage = [UIImage imageNamed:@”icon.png”];

2015-11-14 09:28:37 383

原创 iOS面试题 集锦(1)

这是我从许多iOS面试题中筛选和提炼出来的,在这里留下来备用1 static关键字的作用 (表示看到这题,顿时蒙圈,static是啥啊) (1) 函数体内static变量的作用范围为该函数体,不同与auto变量,该变量的内存只被分配一次,因此其值在下次调用的时候任然维持上次的值的 (靠,说白了 就是不变的啦。。) (2) 在模块内的static全局变量可以被模块内的函数访问,但

2015-11-13 21:14:34 314

原创 IOS中如何异步加载图片(三)KVO观察者

我们继续。。 观察者的作用就是让控制器去观察Model的属性是否发生变化,如果属性有了新值,就重新赋值 上代码!!第一步:注册观察者 // 如果movie.pictureimage为空的时候 执行下面的方法 if (movie.pictureimage == nil) { // 注册观察者 (model类需要controller类成为自己的观察者 当自己有一个属性发生变化

2015-09-12 16:00:57 331

原创 IOS中如何异步加载图片(二)异步加载图片

异步加载图片的原理就是 当网络请求下来的数据中有图片的数据,就把图片的数据提出来 让它自己去通过ImageDownload下载 等下载好了,在把图片传给View去显示。 话不多说 上代码第一步 :在定义的Model类中 重新声明一个属性 用来显示图片的,在这之前 一定要引入ImageDownload的头文件哦!!!@property (nonatomic, retain) UIImage *pic

2015-09-12 15:42:45 571

原创 IOS中如何异步加载图片(一)封装自己的ImageDownLoad类

异步加载图片是IOS软件开发中经常用到的 下面便是一些具体的步骤与方法 希望可以帮到不懂的同学们 注意:这是在MRC环境下自己封装一个图片下载的类 方便使用 在ImageDownload.h文件中写入定义与声明@class ImageDownload;//定义一个名叫SuccessBlock的blocktypedef void(^SuccessBlock)(ImageDownload *im

2015-09-12 14:51:31 317

Alfred3.6 内附破解文件

Alfred 绝对是让 Mac 更加好用的神器之一,如果 Mac 上只能安装一款三方软件,那非 Alfred 莫选。我把 Alfred 拔高到如此地位绝非是为了捧杀它,而是确实实至名归

2018-09-18

Sketch 破解版

Sketch 破解版 原型图设计!!!!!!!!!!!!!!

2018-08-09

Axure RP 8

用于原型图的设计 破解版 !!!!!!!!!!!!!!!!!

2018-08-09

马克鳗MarkMan 40.7

马克鳗,在没有美工的日子里,这个东西还是很好用的!!

2018-08-09

别踩白块 简单版

简单的别踩白块 易实现 用与ios初学者很容易实现的哦。

2015-08-27

空空如也

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

TA关注的人

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