自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BossKai的博客

勿在浮沙筑高台

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

原创 编写高质量的OC代码--------对象、消息、运行时

第6条:理解“属性”这一概念    “属性”是Objective-C的一项特性,用于封装对象中的数据。属性通过存取方法访问。编译器在编译期会自动合成一套存取方法,用以访问给定类型中具有给定名称的实例变量。    使用@synthesize语法可以指定属性对应实例变量的名字。但是不建议这么做,因为如果所有人都使用默认的命名方案,那么写出来的代码大家都能看懂。    使

2017-05-21 16:10:25 692

原创 编写高质量的OC代码--------熟悉Objective-C

第1条:了解Objective-C语言的起源        1、Objective-C的消息结构    Objective-C使用“消息结构”而非“函数调用”。消息结构与函数调用的关键区别在于:使用消息结构的语言,其运行时所应执行的代码由运行环境来决定;而使用函数调用的语言,由编译器决定。如果函数调用是多态的,那么在运行时就要按照“虚方法表”来查出到底应该执行哪个函数实现。而采用消

2017-05-19 08:41:07 416

原创 GCD与并发编程

一、关于多线程    1、并行与并发     并发为逻辑上的同时发生。在多线程操作时,如果系统是单核CPU,则它根本不可能同时进行一个以上的线程,它只能把CPU运行时间划分成极短个时间段,再将时间段分配给各个线程执行。这样CPU快速的在不同的线程之间切换,由于时间间隔较短,使人感觉多个任务在同时运行。    并行为物理(实际)上的同事发生。在多核CPU中。当一个CPU执行一

2017-04-16 13:41:26 289

原创 深入探究Blocks----------内存管理

一、Block的本质    在底层Block是以C语言结构体实现的,而在OC中Block的本质即为OC对象。    通过 "clang -rewrite-objc” 对OC代码进行重新  ^{printf("tempBlock");};          这个Block会被转换成如下结构:    struct __block_impl {

2017-03-23 08:25:07 715

原创 深入探究Blocks----------截获不同种类的自动变量

Blocks是C语言的扩充。可以用一句话来表示Blocks的扩充功能:带有自动变量(局部变量)的匿名函数。Block底层实现是以C语言结构体实现的,在OC中Block即为Objective-C对象。       所谓“带有自动变量”意味着在执行Block语法时,Block语法表达式所使用的自动变量被保存到Block的结构体实例中。本文主要对从Block内部访问不同种类变量的一些特性进行探究。

2017-03-17 08:13:08 365

原创 深入探究OC内存管理

前言:本篇内容假设您已经对内存管理有了基础的理解。如retain、release、autorelease、autoreleasepool的释放及使用、引用计数式内存管理概念等。本篇内容将围内存管理进行一些深入的探究。一、内存管理的思考方式      1.1、内存管理的黄金法则          自己生成的对象自己持有。          非自己生成的对象,自己也能持有。

2017-02-19 15:58:12 438

原创 深入理解Dispatch Queue(一)

Dispatch Queues提供了一种简单的方式让我们在App中实现异步和并发。任务的概念:一个任务是我们的程序需要执行的一个独立的工作。我们可以通过将相应的代码放到一个函数或一个block中并将其添加到调度队列中来定义任务。可以将调度队列理解为一个管理我们提交过的任务的对象。调度队列遵循先入先出的规则,提交到队列中的任务总是以相同的顺序开始启动的。GCD为我们提供了三种调度队列

2016-07-03 20:07:44 10155 1

原创 runtime(三)应用 消息转发

OC 中方法调用是以消息传递实现的[obj foo] 等同于 objc_msgSend(obj,@selector(foo))类的底层构造struct objc_class { Class isa OBJC_ISA_AVAILABILITY; //isa指针 #if !__OBJC2__ Class super_class OBJC2_UNAVAILABLE;

2016-07-03 20:05:54 346

原创 runTime(二)应用 Method Swizzling

Method swizzling 就是改变现有selector 所关联的方法的实现。底层原理为,利用runTime更改类底层方法调度表的映射,在完成映射更改后,这样调用既有的selector就会改为调用更改后的方法实现。从而达到方法替换的目的。在开发中合理的利用Method swizzling可以为我们减少很多冗余的工作。假设我们想追踪用户在每一个视图控制器的停留时间,不要

2016-06-05 06:14:12 352

原创 OC Runtime(一)一些底层实现原理

runtime是一个由C语言和汇编编写的运行时库。runtime为OC提供 了面向对象的能力。他的作用体现在,加载类的信息、调度方法、方法的转发等。使得  OC面向对象编程成为可能。Selector 底层实现为C语言结构体,selector可以唯一标识一个你想要调用的OC方法。在runtime底层它是这样定义的typedef struct objc_selector  *SEL;并

2016-05-29 10:23:47 2419

原创 利用NSURLProtocol实现webView缓存

注册自定义protocol handler MyURLProtocol- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [NSURLProtocol registerClass:[MyURLProto

2016-05-15 11:13:27 586

原创 iOS开发进阶之旅-自定义UICollectionViewFlowlayout

无疑,iOS6引入的UICollectionView是UIKit视图类中的新星。UICollectionView在各个方面都有一定的UITableView的影子。而,相比于UITableView更强的定制性,更大的灵活性是UICollectionView完全超越UITableView的一点。UICollectionView和UITableView都是dataSource和delegat

2016-03-27 18:09:58 2660

原创 iOS开发进阶之旅-WebViewJavascriptBridge的使用

由于公司是一个电商平台,一些活动页面、商城首页对于灵活性要求比较高,对于这些灵活的页面,利用h5来开发是再合适不过的了。由于需求的驱动,在git上找到了WebViewJavascriptBridge,来实现h5与native的进行一些数据上的交互。经过一段时间的使用,对其有了一定的理解在此总结一下。乍一看到WebViewJavascriptBridge的sample时,被里面的各种回调搞的有点

2016-03-13 20:11:28 1968

原创 iOS进阶之旅-图片裁剪

关于UIGraphicsBeginImageContext(CGSize size);UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque, CGFloat scale);UIGraphicsBeginImageContext开启指定区域的图形上下文UIGraphicsBeginImageC

2016-03-06 09:57:29 504

原创 iOS进阶之旅-可交互式转场动画

iOS7苹果为开发者引入了一系列新的API。其中一个尤为出色的API是一个新的视图控制器转换API。有趣的是,对于这个API苹果大量使用了协议,而不是具体的对象。虽然有点奇怪,但这种定义方式为我们提供了极大的灵活性,在深入探讨这个API之前,让我们看一下另一个iOS7的新特性。注意导航控制器在iOS7中默认行为的改变,在导航控制器不同视图切换之间的动画在iOS7之后现在略有不懂,它是可交互的,

2016-02-28 18:18:28 2223

原创 iOS进阶之旅-视图控制器控制与转换

iOS中控制器协调了后台数据与屏幕上展现的界面。在一个好的MVC设计模式中,控制器中用来处理很多必不可少的应用程序逻辑。UIKit提供了许多内置的视图控制器如UITabBarController或UINavigationController视图控制器。有了这些,正常开放中我们可以轻易的搭建出app的视图控制器框架。但有时候我们需要或者想要更多自定义的东西,本文将讨论一些有用的技术,视图控制器控制与

2016-02-21 20:45:15 496

空空如也

空空如也

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

TA关注的人

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