自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 React Native源码学习

1、主线程中 同步/异步 调用一个block实现:void RCTExecuteOnMainThread(dispatch_block_t block,BOOL sync){  if ([NSThreadisMainThread]) {    block();  } elseif (sync) {    dispatch_sync(dispatch_ge

2016-10-20 16:19:51 438

原创 待整理文章

http://www.cocoachina.com/ios/Xcode7 UI自动化测试详解带demo UITestshttp://www.cocoachina.com/ios/20150925/13566.htmliOS 代码实践总结http://www.cocoachina.com/ios/20150923/13531.htmlReact

2016-05-18 15:09:05 509

原创 前端开发环境搭建

前端(FE)开发环境设置和编辑器选择目的本文旨在帮助刚刚加入前端开发的新人设置开发环境,掌握基本的编辑器的使用。使新人能够迅速融入团队,并开始具体代码的开发实践。环境设置安装Node JS和npm包管理系统Node JS是用来搭建我们的本地开发环境的工具。它实现了一个简单的HTTP Server。在我们前台的开发中,我们通常使用根据NodeJ

2016-04-28 16:49:13 7034

原创 导致离屏渲染的情况

边框(boders)圆角 (cornerRadius)阴影 (shadow)遮罩 (masks)渐变抗锯齿(allowsEdgeAntialiasing)透明度(allowsGroupOpacity)栅格化(shouldRasterize)

2016-04-19 23:20:51 559

转载 UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

ayoutSubviews总结ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–- (void)set

2016-04-19 23:04:19 363

转载 iOS 各种坐标系对比

使用CGContextDrawImage绘制图片上下颠倒首先要说的是,在iOS的不同framework中使用着不同的坐标系:UIKit - y轴向下Core Graphics(Quartz) - y轴向上OpenGL ES - y轴向上UIKit是iPhone SDK的Cocoa Touch层的核心framework,是iPhone应用程序图形界面和事件驱动的基

2016-04-19 21:28:52 1366 1

原创 App Extension如何使用主工程中的代码

1、extension如何与主工程共享代码      假如共享代码中引用了其他类,也需将引用类共享。 2、若extension使用swift实现、主工程为OC,如何共享      使用桥接文件,即xxxx-Bridge-Header.h,将需要的文件引入即可注意:必须在extension的配置文件中正确指定桥接文件位置3、若主工程

2016-04-19 21:26:28 1883

转载 抗锯齿的性能问题

为layer设置allowsGroupOpacity后,在图片旋转时不会产生锯齿,但是帧数很低,性能很差。其中一个方法是:为图片增加透明的border。123456789101112131415161718

2016-04-19 20:47:07 814

转载 SDWebImage详解

SDWebImage内部实现过程入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage 显示,然后 SDWebImageManager 根据 URL 开始处理图片。进入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交给

2016-04-19 19:49:55 293

原创 图片解码方法

采用SDWebImage中的实现方法:+ (UIImage *)decodedImageWithImage:(UIImage *)image {    if (image.images) {        // Do not decode animated images        return image;    }

2016-04-19 19:41:01 9699

转载 iOS 图形处理 Core Graphics Quartz2D 教程

Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析。iOS支持两套图形API族:Core Graphics/QuartZ 2D 和OpenGL ES。Open

2016-04-19 17:59:35 1184

转载 Facebook: Pop

--

2016-04-16 23:46:17 274

转载 Facebook:AsyncDisplayKit

AsyncDisplayKit 是 Facebook 开源的一个用于保持 iOS 界面流畅的库,我从中学到了很多东西,所以下面我会花较大的篇幅来对其进行介绍和分析。 ASDK 的由来ASDK 的作者是 Scott Goodson (Linkedin),他曾经在苹果工作,负责 iOS 的一些内置应用的开发,比如股票、计算器、地图、钟表、设置以及Safari 等,当

2016-04-16 23:40:04 1055

转载 Instruments检查视图卡顿和优化

1) Color Blended LayersInstruments可以在物理机上显示出被混合的图层Blended Layer(用红色标注),Blended Layer是因为这些Layer是透明的(Transparent),系统在渲染这些view时需要将该view和下层view混合(Blend)后才能计算出该像素点的实际颜色,如果这种blended layer很多,那么在滚动列表时就甭想有流畅

2016-04-16 23:29:26 3080

转载 视图渲染、CPU和GPU卡顿原因及其优化方案

视图渲染过程:1、CPU 计算好显示内容提交到 GPU2、GPU 渲染完成后将渲染结果放入帧缓冲区3、视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示在最简单的情况下,帧缓冲区只有一个,这时帧缓冲区的读取和刷新都都会有比较大的效率问题。为了解决效率问题,显示系统通常会引入两个缓冲区,即双缓冲机制。在这种情况下,GPU 会预先渲

2016-04-16 23:01:27 19514

转载 Swift的动态性

动态性比较重要的一点就是能够拿到某个类所有的方法、属性,我们使用如下代码来打印方法和属性列表。纯Swift类的函数调用已经不再是Objective-c的运行时发消息,而是类似C++的vtable,在编译时就确定了调用哪个函数,所以没法通过runtime获取方法、属性。TestSwiftVC继承自UIViewController,基类为NSObject,而Swift为了兼

2016-04-16 19:38:38 1830

原创 Notification、KVO实现代码

1、通知监控方:在消息中心中,为Observer(大部分情况是self)增加一个监控,当收到一个name的通知时,执行selector操作。一般放在ViewDidLoad或者viewWillAppear,后者为佳。[[NSNotificationCenterdefaultCenter] addObserver:self

2016-04-12 22:30:54 360

转载 视频直播技术

HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。要实现HLS点播,重点在于对媒体文件分段,目前有不少开源工具可以使用,这里我就不再讨论,只谈HL

2016-04-12 21:08:53 3034

原创 为图片加圆角

+ (UIImage *)bc_imageWithColor:(UIColor *)color                   strokeColor:(UIColor *)strokeColor                          size:(CGSize)size                  roundCorners:(UIRectCorner)

2016-04-11 00:39:11 225

转载 HashMap、Hashtable

哈希表由数组+链表组成,一个长度为16的数组中,每个元素存储的是一个链表的头结点。而HashMap和Hashtable就是哈希表结构。工具/原料HashMap和HashTable数组的存储空间是连续的,占用内存严重,故空间复杂度很大,但是查找时间复杂度较小。数组的特点:寻址容易,插入和删除困难。链表的存储空

2016-04-10 22:51:48 308

转载 CoreAnimation

Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。核心动画继承结构核心动画继承结构注意:核心动画中的虚类不能使用,而应该使用他们子类中的实类。Core Animation的使用步骤如果是Xcode6之前的

2016-04-10 22:17:30 176

转载 Core Graphics

Core Graphics和UIKit的区别首先从概念上了解一下:根据苹果的描述,UIKit是我们最容易也是最常接触到的框架。绝大多数图形界面都由UIKit完成。但是UIKit依赖于Core Graphics框架,也是基于Core Graphics框架实现的。如果想要完成某些更底层的功能或者追求极致的性能,那么依然推荐使用Core Graphics完成。Core G

2016-04-10 22:14:36 222

转载 TableView性能优化

一、简单易想到的方法1、cell重用static NSString *CellIdentifier = @"LazyTableCell";UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];2、高度计算

2016-04-10 19:31:54 316

转载 AFNetworking 详解

一、系统提供的类和作用:1.NSURLSessionConfiguration类其中NSURLSessionConfiguration用于配置会话的属性,可以通过该类配置会话的工作模式2.NSURLSession类第一种方式是使用静态的sharedSession方法,该类使用共享的会话,该会话使用全局的Cache,Cookie和证书。第二种方式是通过

2016-04-10 17:33:05 709

原创 Autorelease Pool

一、与RunLoop相关App启动后,苹果在主线程 RunLoop 里注册了两个 Observer,其回调都是 _wrapRunLoopWithAutoreleasePoolHandler()。第一个 Observer 监视的事件是 Entry(即将进入Loop),其回调内会调用 _objc_autoreleasePoolPush() 创建自动释放池。其 order 是-21474

2016-04-10 11:40:44 256

转载 UIViewController的生命周期及iOS程序执行顺序

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序1、 alloc                                   创建对象,分配空间2、init (initWithNibName) 初始化对象,初始化数据3、loadView                          从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图

2016-04-10 11:36:55 178

转载 iOS应用程序的生命周期

Main函数入口所有基于C编写的app的入口都是main函数,但iOS应用程序有点不同。不同就是你不需要为iOS应用程序而自己编写main函数,当你使用Xcode创建工程的时候就已经提供了。除非一些特殊情况,否则你不应该修改Xcode提供的main函数实现。示例代码如下:#import#import "AppDelegate.h" 

2016-04-10 10:09:48 190

转载 NSOperation 详解

一、步骤:NSOperation和NSOperationQueue实现多线程的具体步骤:(1)先将需要执行的操作封装到一个NSOperation对象中(2)然后将NSOperation对象添加到NSOperationQueue中(3)系统会⾃动将NSOperationQueue中的NSOperation取出来(4)将取出的NSOperation封

2016-04-09 17:31:17 288

转载 GCD详解

它是苹果为多核的并行运算提出的解决方案,所以会自动合理地利用更多的CPU内核(比如双核、四核),最重要的是它会自动管理线程的生命周期(创建线程、调度任务、销毁线程)。一、队列队列:用于存放任务。一共有两种队列, 串行队列 和 并行队列。 同步执行异步执行串行队列当前线程,一个一个执行其他线程,一个一

2016-04-09 16:16:48 684

转载 多线程 依赖

如何实现一个任务依赖于其他2个任务的实现方法?1、使用GCD实现灵活使用dispatch_group创建dispatch_group_t添加任务(block)添加结束任务(如清理操作、通知UI等)//1.创建队列组dispatch_group_t group = dispatch_group_create();//2.

2016-04-09 16:12:20 489

原创 FMDB 操作数据库

操作数据库,之前,统一操作:if (![db open]) {        [db release];        return;}之后统一操作:[db close];1、创建表:[db executeUpdate:[NSString stringWithFormat:@"CREATE TABLE %@ (title text,id text U

2016-04-08 22:37:34 185

原创 第三方库

1、AFNetworking2、AESCrypt3、GMGridView4、CocoaLumberjack5、BaiduMobStat6、HPGrowingTextView7、JRSwizzle8、MJRefresh9、MBProgressHUD10、SDWebImage11、TouchJSON12、TQRichTextView13、WebViewJ

2016-04-07 19:05:22 252

原创 NSURL 、NSURLRequest、NSURLConnection、NSURLSession、NSURLSessionDataTask

NSString ---> NSURL --> NSURLRequest --> NSURLConnection  被弃用+ (nullable NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse * __nullable * __nullable)resp

2016-04-06 11:35:10 381

转载 Cocoa Bindings

==

2016-04-06 10:22:24 331

转载 CoreData

引言:Core Data 是 iOS 3.0 以后引入的数据持久化解决方案,其原理是对SQLite的封装,是开发者不需要接触SQL语句,就可以对数据库进行的操作.其编码方式和原理结构方面较为特殊,本博文主要介绍在使用Core Data时遇到的各种问题以及对其核心原理进行解释.参考资料: 1: iOS教程:Core Data数据持久性存储基础教程h

2016-04-06 10:21:49 202

转载 离屏渲染

GPU渲染机制:CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。减少离屏渲染GPU屏幕渲染有以下两种方式:On-Screen Rendering意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。

2016-04-06 01:02:38 2598

转载 后台任务(10分钟)

// AppDelegate.h文件@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;// AppDelegate.m文件- (void)applicationDidEnterBackground:(UIApplication *)application{ [self bei

2016-04-06 00:49:51 450

转载 lazy loading

懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其getter方法。说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源。使用懒加载的好处:(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强(2)每个控件的getter方

2016-04-05 23:53:38 416

转载 NSCopying、NSCoding

NSCopying:如果要调用一个对象的copy方法,这个对象必须遵循NSCopying的协议。这个协议中规定了一个方法:-(id)copyWithZone:(NSZone *)zone;我们就是通过实现这个方法给对象提供拷贝的功能。对于很多现有类,如NSString,NSDictionary,。。。这个方法已经实现。假设我们现在自定义了一个类,需要为这个类提供拷贝的功

2016-04-05 22:59:03 1709

转载 线程同步方法、性能比较(synchronized,ReentrantLock,Atomic)

synchronized: 在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化synchronize,另外可读性非常好,不管用没用过5.0多线程包的程序员都能理解。 synchronized(self)是对self对象加互斥锁。ReentrantLock: ReentrantLock提供了

2016-04-05 22:14:13 715

空空如也

空空如也

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

TA关注的人

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