自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lotheve的私房菜

勿谓湖小 天在其中

  • 博客(83)
  • 资源 (3)
  • 收藏
  • 关注

原创 iOS URL编码&base64编码

URL编码网络标准RFC 1738中规定URL中只能包含英文字、阿拉伯数字以及一些特殊字符。具体包括:字母和数组[0-9a-zA-Z]、特殊符号-._~:?#[]@!$&'()*+,;=\` 。URL中若含有这些规定符号以外的符号,URL都是不合法的,因此对于一些含有特殊符号或中文字符的URL,在请求前需要对URL进行编码。下面URL作为本例中编码演示的原始URLNSString *urlStrin

2016-12-17 14:04:55 3272

原创 iOS热修复(热更新)技术预研

热修复简介对于iOS应用而言,app store的审核周期可能通常维持在1-2个星期。倘若一个线上的应用出现了一些bug,甚至是致命的崩溃,这时候假如按照苹果的套路乖乖重新发布一个版本,然后静静等待看似漫无期限的审核周期,最终结果就是:用户大量流失。因此,对于一些线上的bug,需要有及时修复的能力,这就是所谓的热修复(hotfix)。由于苹果应用审核周期长(毕竟苹果尿性高),hotfix就是一个非常

2016-12-06 23:00:08 8459

原创 iOS静态库制作

QA静态库与动态库的区别静态库:在链接的时候被完整地链接到可执行文件中,同一个静态库在不同程序中使用,每个程序都得导入一次,打包时也会被包进去,使其成为程序的一部分。 动态库:程序运行的时候由系统动态地加载进内存,供程序调用,本身并不是程序的一部分。(iOS只支持系统的动态库)静态库/动态库形式静态库: .a 和 .framework 动态库: .dylib 和 .framework

2016-10-14 11:17:26 933

原创 十大排序算法再总结

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>typedef int bool;#define true 1#define false 0void bubbleSort(int arr[], int n); //冒泡排序void bubbleSort2(i

2016-09-20 17:10:29 696

原创 iOS事件机制

响应者链我们的视图结构是一个N叉树(一个视图可以有多个子视图,一个子视图同一时刻只有一个父视图),而每一个继承UIResponder的对象都可以在这个N叉树中扮演一个节点。当叶节点成为最高响应者的时候,从这个叶节点开始往其父节点开始追朔出一条链,那么对于这一个叶节点来讲,这一条链就是当前的响应者链,而这一个节点就是这条响应链的hit-test view。响应者链将系统捕获到的由UITouch(触摸)

2016-08-21 17:15:38 556

转载 HTTP缓存策略

浏览器一般缓存图片、CSS、JS等静态文件,因为这些文件的更新频率相对来说比较低,合理利用浏览器的缓存对网站的性能提升有很大帮助。HTTP缓存分为两部分,分别是本地缓存和缓存协商,当本地缓存不生效时会启用缓存协商。HTTP缓存主要由HTTP协议的头(Header)信息来制定。 本地缓存本地缓存是指当浏览器请求资源时,如果命中了浏览器本地的缓存资源,那么浏览器就不会发送真正请求给服务器。它的执行过程

2016-08-17 20:12:01 593

原创 NSString内存管理

NSString的内存优化OC中的NSString不论是在编译时还是在运行时都做了很多的优化,并不同于普通的对象,它是一个非常复杂的存在。

2016-07-26 14:34:21 2798

原创 和block循环引用说再见

to be block? or to be delegate? 这是一个钻石恒久远的问题。个人在编码中暂时没有发现两者不能通用的地方,习惯上更偏向于block,没有什么很深刻的原因,只是认为block回调写起来更便捷,直接在上下文中写block回调使得代码结构更清晰,可读性更强。而delegate还需要申明protocol接口,设置代理对象,回调方法与上下文环境不能很好契合,维护起来没有block方

2016-07-22 10:29:09 3424 1

原创 初探React Native

PS该报告偏向理论层面,技术层面由于本人才疏学浅属于前端小白因此暂时未作过多研究。一、React Native相关介绍简介React Native是Facebook开发的一套框架,其目的在于使用JavaScript语言开发原生APP,目前iOS版本和Android版本均已开源。框架定位下图摘自React Native官网首页:翻译: React Native使你能够基于javaScript和Re

2016-07-13 19:34:15 2928

原创 iOS配置FFmpeg框架

一、下载一个Perl写的脚本文件,该脚本在执行编译脚本的时候需要依赖。https://github.com/libav/gas-preprocessor解压下载好的文件,里面有一个 gas-preprocessor.pl 脚本文件,需要将该文件copy到 /usr/bin 目录下。终端执行:sudo cp -f /Users/lotheve/Desktop/gas-preprocessor-mas

2016-05-27 16:34:53 2369 2

原创 iOS开发-视图控制器相关

视图控制器生命周期alloc创建控制器,分配内存地址init初始化控制器。loadView加载视图。控制器被创建以后,其view并没有随之创建(即self.view是为nil),而是在该方法中创建view,将其赋值给self.view。若是nib文件,则加载nib中的view(包括子视图);若是纯代码,则自动创建一个view。viewDidLoad视图加载完毕。可以在这里对视图做自定义的更改

2016-04-05 17:32:20 753

原创 iOS开发-剪切板实现拷贝粘贴

简单介绍在应用程序中,经常会有对一段文字进行拷贝、剪切、粘贴的需求,iOS提供了3个自带这些功能的控件:UITextFieldUITextViewUIWebView但是实际中有时候可能需要对这3个以外的控件进行文本、图片等的拷贝粘贴,就需要自定义实现。UIKit framework为我们提供了几个相关的类和协议用来实现这一功能。UIPasteboard:剪切板,用来向其中写入数据以及从中读

2016-04-02 16:26:04 5507

原创 UITableView API大百科

UITableView API全解,包括UITableViewDataSource、UITableViewDelegate

2016-04-01 12:03:15 1065

原创 Cell展开&&收缩全垒打

引言最近想把UITableView(表视图)全面熟悉一遍,接触到两个实例方法- (void)beginUpdates;- (void)endUpdates;经过一番研究后发现这两个方法除了用来批量操作Cell,还有改变动态更新行高的作用。官方文档给出了这样的说明: You can also use this method followed by the endUpdates method to

2016-03-30 10:09:14 2994

原创 iOS开发-beginUpdates && endUpdates用法

本篇主要介绍使用beginUpdates和endUpdates方法对UITableView的Cell进行批量操作更新。

2016-03-27 21:02:05 8569 1

原创 static变量详解

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生命周期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。

2016-03-24 18:29:53 1215 1

原创 iOS多线程篇之GCD

引言上一篇文章介绍了iOS中用于实现多线程的NSThread相关API,然而该框架需要手动管理线程的生命周期,使用起来很不方便。本篇将介绍iOS中最为出色的多线程框架GCD(Grand Central Dispatch)。事实上,GCD的作用远不止多线程操作,本篇将只介绍GCD较为常规的一些用法。GCD是一个苹果公司用C语言开发的框架,好在iOS6.0以后,GCD对象被纳入了ARC的管理范围,因此不

2016-03-23 09:36:39 945 1

原创 OS基本概念相关

进程、线程、多线程进程:进程是一个程序在数据集上的运行过程,它并不等同于程序,而是一个程序执行的动态过程,由进程控制块控制。在早期的单处理机多道程序设计计算机中,进程作为操作系统资源调度和分配的最小单元,同时也是程序执行的最小单元。进程的产生使得程序得以并发执行,然而由于进程的创建和撤销伴随着大量系统资源的创建和释放,同时进程调度的开销也很大,这对单处理机的计算机并发性能有很大的制约,为了提升并发效

2016-03-21 15:03:30 907

原创 iOS多线程之NSThread

前言多线程的价值无需赘述,对一个app性能和用户交互起着至关重要的作用。说道多线程,不得不提一个老猿常谈的问题:没错!什么是进程?什么是线程?两者有什么区别。我的天,瞬间脑洞又大了!赶紧翻操作系统!科普:进程与线程进程是程序在数据集上的执行过程。注意进程不是程序,而是程序执行的一个动态的过程。早期的多道程序系统计算机是没有线程这个概念的,那时候的进程是程序在操作系统中的最小执行单位,同时也是资源分配

2016-03-18 12:01:15 1033

原创 iOS开发-UIScrollView详解

属性directionalLockEnabled用于拖拽的时候锁定滚动方向 默认为NO即不锁定bounces用于指示scrollView的内容边界能否超出scrollView边界 默认为YES,即有回弹效果alwaysBounceVertical垂直方向contentView高度小于scrollView高度时仍能拖拽(前提是bouncs属性为YES)alwaysBounceVertical水

2016-03-16 12:31:33 677

原创 iOS开发-XML解析

简单介绍XML文件的解析方式有两种:SAX (Simple API for XML) 它以逐行解析的方式,通过协议回调来跟踪解析过程。DOM (Document Object Model)它将文件一次性解析好之后加入内存,无法跟踪解析过程,对内存的要求比较高,因此比较适合解析小文件。iOS提供了两套解析XML文件的框架:NSXMLParser和libxml2NSXMLParser:一套基于O

2016-03-10 20:17:18 1172

原创 IOS开发-初识CoreData

简单介绍1.Core Data 是数据持久化存储的最佳方式2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中,开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式3.好处:能够合理管理内存,避免使用sql的麻烦,高效4.构成:(1)NSManagedObjectContext

2016-03-10 12:58:35 660

原创 IOS开发-NSNumber、NSValue、NSData的区别

简单介绍我们在编码的时候,有时候需要将C里面原生的数据封装成对象,这样才能将其打包进NSDictionary或者NSArray进行存储或者其他操作;又譬如有时候需要存储结构体、图片等数据。OC给我们提供了一些相关接口,比较常见的是NSNumber、NSValue和NSData;NSNumberNSNumber主要是用来封装ANSI C内置的数据,比如char,float,int等等,相关方法如下:

2016-03-08 14:45:00 1836

原创 IOS开发-SQLite数据库

简单介绍iOS中保存本地数据的方法有多种:Plist、NSUserDefault、NSKeyArchiver。然而这些方法有一个共性,就是只能用于存储少量的数据,如果需要存储大量的数据,使用这些方法就会存在很大的性能问题。 SQLite是一种轻量级的关系型数据库,由于它占用的资源非常少,主要用于作为移动端的数据库来使用,安卓和iOS使用的都是SQLite数据库,其SDK中均内置了SQLite驱动,

2016-03-07 20:21:41 773

原创 IOS开发—网络请求、上传下载、断点续传(NSURLSession)

简单说明在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。 NSURLSessionConfiguration类对网络请求层的设置选项进行了扩充,可以配置从指定可用网络,到 cookie,安全性,缓存策略,再到使用自定义协议,启动事件的设置,以及用于移动设备优化的几个新属性。本例只对常规的

2016-03-06 20:51:56 1793

原创 IOS开发—跳转到系统设置以及其他应用

跳转到系统设置跳转到系统设置首页NSURL *url = [NSURL URLWithString:@"prefs:root="];if ([[UIApplication sharedApplication] canOpenURL:url]){ [[UIApplication sharedApplication] openURL:url];}跳转到某个具体的系统设置项界面以跳转到wi

2016-02-29 20:48:03 1096

原创 React Native工程离线运行(ios)

React Native工程离线运行的重点是将index.ios.bundle文件保存在机器本地,index.ios.bundle文件是工程编译后的js文件的打包,index.ios.bundle 将被 packager服务器 创建。。纯RN工程纯RN工程在工程创建好后就XCode目录中就包含了main.jsbundle文件,只不过文件是不存在的(XCode文件名红色),这个文件就是编译的时候由pa

2016-01-29 13:22:49 5328

原创 ios原生集成React Native

安装react native依赖本例在工程跟目录下创建了一个ReactComponent文件夹用来存放react native文件。终端进入ReactComponent目录,执行npm install react-native –save安装react native依赖。通过cocoapods对工程安装React Native在工程根目录(本例工程名为Integration)中创建Podfile文件

2016-01-27 14:47:11 3632 3

原创 git命令

本地版本库基本操作git init 将当前所在目录初始化成一个git仓库 git add <文件名> 把文件添加到暂存区 jit commit -m “<提交日志>” 把暂存区的所有内容提交到当前分支 PS:当文件修改后提交也同样用这两步 git status 查看仓库当前的状态 git diff 查看当前未提交的修改和之前有什么差别 git log

2015-12-20 18:12:34 497

原创 iOS程序的证书和签名机制

从真机调试角度理解ios证书机制非对称加密理解非对称加密是理解证书机制的关键。非对称加密就是加密密钥和解密密钥是不同的加密方式。典型用法如下: 对信息保密:使用接收人的公钥对明文加密,然后传输给接收人。这样密文只能通过接收人的私钥解密,即便传输过程中密文被截获也是无法解开的,这就保证了信息传输的保密性。 验证报文所属人身份和防止篡改(签名):使用发送人的私钥对报文进行加密,就是发送人对报文进

2015-12-18 20:33:59 3629

原创 8086汇编

指令mov指令(传送指令) 将数据直接送入寄存器 mov ax,01 将一个寄存器中的内容送入另一个寄存器 mov ax,bx 将一个内存单元中的内容送入一个寄存器中 mov al,[0] 将一个寄存器中的内容送入到一个内存单元中 mov [0],al PS: (1) 3、4中的[0],0为内存单元的偏移地址,段地址自动从DS寄存器中获取 (2) mov al,

2015-12-17 18:53:22 2856

原创 计算机组成之机器

第一章 计算机系统概论指令指令格式由操作码和地址码组成,操作码指明执行什么操作,地址码指明操作数在内存单元(存储单元)中的地址。指令和数据以二进制的形式以同等地位保存在存储器的存储单元中。运算器运算器的基本功能就是完成运算,其核心是ALU(算术逻辑运算单元)。其中的寄存器主要有ACC(累加器)、MQ(乘商寄存器)、X(数据寄存器)。控制器控制器的功能是解释一条指令(完成一条指令)以及保证指令的按序执

2015-12-02 15:16:02 1837

原创 html脚本语言

HTML脚本语言介绍HTML(Hyper Text Markup Language)即超文本标记语言或超文本链接标示语言,它不是一种真正的编程语言,只是一种标记符。通过一些约定的标签符号对文件的内容进行标注,指出内容的输出格式,如字体大小及颜色、背景颜色、表格形式、各部分之间逻辑关系等。当用户浏览WWW信息时,浏览器会自动解释这些标签的含义,并按照一定的格式在屏幕上显示这些被标记的信息。标签介绍单标

2015-11-10 15:02:24 4064

原创 IOS开发—CAShapeLayer与CAGradientLayer

CAShapeLayer介绍1、CAShapeLayer是一种特殊的层,可以在上面渲染图形。 2、CAShapeLayer继承自CALayer,可使用CALayer的所有属性。 3、CAShapeLayer需要和贝塞尔曲线配合使用才有意义,贝塞尔曲线为其提供渲染的图形。 4、使用CAShapeLayer与贝塞尔曲线可以实现不再view的drawRect方法中画出一些想要的图形。 关于CASh

2015-11-06 19:36:37 2235

原创 iphone屏幕适配规则及启动图设置方法

屏幕适配规则有时候运行程序,发现界面上下出现了黑框,这是由于当前程序没有适配iphone5的屏幕导致的。我们知道,iphone5屏幕像素640*1136,比iphone4的640*960在高度上多了176个像素,即88个点,假如程序没有适配iphone5,那么运行在iphone5上的结果就是上下各有高度为44个点的黑边。 那么系统是怎样得知是否已经适配了iphone5的呢?如果你以为启动图片的作用

2015-11-06 14:22:27 3572

原创 区分分辨率、像素、点、尺寸

分辨率、像素,通常用来屏幕或者图片上,用来形容清晰度。我们通常说这个屏幕的分辨率是多少多少,摄像头像素多少多少,具体什么意思呢? 以分辨率为320*480的iphone3GS屏幕(一倍屏)为例说明: 像素:像素是组成图象的最基本单元要素(最小单元),该屏幕长方向上有320个像素,宽方向上有480个像素。320*480约等于15万,就说这个屏幕的像素为15万。一个像素只能显示一种颜色 分辨率:分

2015-11-06 10:43:44 5749

原创 IOS开发—UIScrollView的contentSize、contentInset、contentOffset的理解

原以为对scrollView的这几个属性已经够了解了,最近碰到contentInset才发现自己依旧是含糊不清的,在此再做一番理解:UIScrollView:以容器的方式存在contentView:内容视图,scrollView上用来滚动的区域,姑且将其当做是一个view方便理解,add到scrollView上的视图或者控件都是添加在这上面的。这个东西并不存在,或者说不知道是否存在,至少我

2015-10-30 20:17:32 1554

原创 IOS开发—CATransform3D介绍

最近项目中用到CATransform3D实现动画效果,感觉有点力不从心,对CALayer的一些属性模棱两可,故做了一番整理。首先要知道的几个概念:1、三维坐标系:视角垂直与屏幕而言,x轴向右,y轴向下,z轴垂直屏幕向外。 2、坐标系原点:ios默认以图层的左上角点为坐标原点,osx默认以图层左下角为坐标原点。注意是默认,因为图层的坐标原点是可以设置的,下面会介绍。3、view于layer的关系:对

2015-10-27 18:35:37 3442

原创 IOS开发—IB_Designable & IBInspectable介绍

引言在Xcode的旧版本中,试图创建一个自定义控件,并不是很容易,因为在IB中,并不能实时预览到你的设计成果,只能在模拟器中测试。对于设计一个单一组件,可能需要花费大量时间。 Xcode6的发布,苹果为开发者构建自定义控件推出了新功能IBDesignable和IBInspectable,允许在IB中实时预览设计成果。很明显,这会给实际开发提升很高效率。IB_Designable常规用法时时渲染的“

2015-10-18 19:56:28 2365

原创 IOS开发—系统定位

说明涉及到的框架核心定位框架CoreLocation,需要导入头文件 #import <CoreLocation/CoreLocation.h> 主要涉及的类有定位管理器CLLocationManager、位置类CALocation、地理信息编码类CLGeocoder、地标类CLPlacemark 以及 协议CLLocationManagerDelegate。 CLLocationMa

2015-10-06 21:05:37 2306

CASshapeLayer与CAGradientLayer演示

CASshapeLayer与CAGradientLayer演示

2015-11-06

UICollectionView常规用法

Demo涵盖了UICollectionView的常规用法、不规则瀑布流的实现、滑动动画的实现以及UICollectionView中cell删除插入的简单介绍。

2015-11-02

sourcetree for mac 中文版

提供sourcetree中文版(mac),帮助学习该软件,实际项目中建议使用官方英文版

2015-04-09

空空如也

空空如也

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

TA关注的人 TA的粉丝

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