自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

转载 深入研究Block捕获外部变量和__block实现原理

前言Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这个新功能“Blocks”。从那开始,Block就出现在iOS和Mac系统各个API中,并被大家广泛使用。一句话来形容Blocks,带有自动变量(局部变量)的匿名函数。Block在OC中的实现如下:struct Block_layout { void *isa;

2017-05-23 12:03:42 467

转载 被误解的MVC和被神化的MVVM

被误解的 MVCMVC 的历史MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。MVC 的概念最早出现在二十世纪八十年代的 施乐帕克 实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了这种

2017-05-21 11:29:15 712

转载 iOS-网络编程 文件上传和断点离线下载

一. iOS中发送HTTP请求的方案在iOS中,我们常用发送HTTP请求的方案有苹果原生(自带)NSURLConnection:用法简单,最古老最经典最直接的一种方案 (iOS 9.0弃用)NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术第三方框架AFNetworking:简单易用,提供了基本够

2017-05-21 11:27:45 507

转载 揭开Socket编程的面纱

什么是TCP/IP、UDP?         TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。         UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。     

2017-05-21 11:23:21 396

转载 iOS runtime实战应用:Method Swizzling

前言在开始之前建议先阅读iOS runtime的基础理解篇:iOS内功篇:runtime现在IT届流行一个词叫“黑科技”,泛指一些让人“不明觉厉的”新技术或新产品,那在iOS开发中有什么高大上的“黑科技”呢?runtime中的Method Swizzling当仁不让,它是一把双刃剑,高手耍起来威力无限,菜鸟耍起来则可能伤及自身。对于这样的黑科技,我们当然要掌握并努力驾驭之。

2017-05-21 11:21:50 414

转载 iosiOS消息转发机制

在Objective-C中,使用对象进行方法调用是一个消息发送的过程(Objective-C采用“动态绑定机制”,所以所要调用的方法直到运行期才能确定)。    方法在调用时,系统会查看这个对象能否接收这个消息(查看这个类有没有这个方法,或者有没有实现这个方法。),如果不能并且只在不能的情况下,就会调用下面这几个方法,给你“补救”的机会,你可以先理解为几套防止程序crash的备选方案,

2017-05-21 11:20:17 292

转载 【iOS】类簇(class cluster)

类簇实际上是Foundation framework框架下的一种设计模式,它管理了一组隐藏在公共接口下的私有类。类簇的基本概念和实现思路为了举例说明类簇的结构体系和好处,我们先想想如何构建一个类的结构体系,然后用这个类指定一个对象来存储不同数据类型的变量(如:char,int,float,double)?因为不同数据类型的变量在使用的时候可以互相转换类型或用字符串标识,所以我们可以

2017-05-21 11:18:19 360

转载 正则表达式

定义:又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本;使用步骤1.定义正则表达式规则2.通过规则,创建正则表达式对象3.利用正则表达式对象匹配

2017-05-21 11:17:04 413

原创 GCD常用方法

1、常用的方法dispatch_asyncdispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{      // 耗时的操作      dispatch_async(dispatch_get_main_queue(), ^{          // 更新界面      })

2017-05-21 11:16:23 473

转载 HTTPS请求(三)

本文分为以下五节:中间人攻击:介绍中间人攻击常见方法,并模拟了一个简单的中间人攻击;校验证书的正确姿势:介绍校验证书的一些误区,并讨论了正确校验方式;ATS:讨论下 iOS 9.0 新发布的的特性App Transport Security;调试SSL/TLS:讨论使用Wireshark进行SSL/TLS调试的方法;后记其中第1节“中间人”是比较常见基础的知识,网上也可以找

2017-05-21 11:12:42 2866

转载 HTTPS详析(二)

一、简介HTTPS即 HTTP + SSL 层,具体介绍在这里。二、HTTPS与HTTP的区别这里用两张图来介绍两者的区别:HTTP:当客户端发送请求,那么服务器会直接返回数据。HTTP.pngHTTPS:当客户端第一次发送请求的时候,服务器会返回一个包含公钥的受保护空间(也成为证书),当我们发送请求的时候,公钥会将请求加密再发送给服务器,服务器

2017-05-21 11:09:12 617

转载 HTTPS详析(一)

1. HTTPS其实HTTPS从最终的数据解析的角度,与HTTP没有任何的区别,HTTPS就是将HTTP协议数据包放到SSL/TSL层加密后,在TCP/IP层组成IP数据报去传输,以此保证传输数据的安全;而对于接收端,在SSL/TSL将接收的数据包解密之后,将数据传给HTTP协议层,就是普通的HTTP数据。HTTP和SSL/TSL都处于OSI模型的应用层。从HTTP切换到HTTPS是一个非常简

2017-05-21 11:07:02 408

转载 避免滥用单例

单例是整个 Cocoa 中被广泛使用的核心设计模式之一。事实上,苹果开发者库把单例作为 "Cocoa 核心竞争力" 之一。作为一个iOS开发者,我们经常和单例打交道,比如 UIApplication 和 NSFileManager 等等。我们在开源项目、苹果示例代码和 StackOverflow 中见过了无数使用单例的例子。Xcode 甚至有一个默认的 "Dispatch Once" 代码片段

2017-05-21 11:04:25 277

转载 聊聊NSURLSession

iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载系统的彻底重构。现在已经有人在深入苹果的网络层基础架构的地方做研究了,所以我想是时候来分享一些对于我对于这些新的 API 的看法和心得了,新的 API 将如何影响我们编写程序,以及它们对于 API 设计理念的影响。NSURLConnection 作为

2017-05-21 11:02:23 293

原创 iOS网络请求浅谈

http请求:1 请求行:http请求方法、请求URI、http版本2 请求头:他向服务器提供额外的元数据,这些元数据可以描述客户端、进一步描述请求或是从服务器请求莫种类型的响应。每个请求可以提供一个或多个头。Host头是http1.1请求中唯一必须提供的头。它提供了客户端指定的原始主机名。3 请求体:请求体可以是任意的字节序列,通过一个空行与头分隔开来。请求体必须遵循客户端与服务器之

2017-05-21 11:00:05 400

转载 socket编程常用接口列表

API接口讲解int socket(int addressFamily, int type,int protocol)int close(int socketFileDescriptor)socket 创建并初始化 socket,返回该 socket 的文件描述符,如果描述符为 -1 表示创建失败。close 关闭 socket。

2017-05-21 10:55:45 1368

原创 iOS中堆和栈的区别

objective-c 对象所占内存总是分配在“堆空间”,并且堆内存是由你释放的,即release。栈是由编译器管理自动释放的,在方法中(函数体)定义的变量通常在栈内。1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注 堆和数据结构中的

2017-05-21 10:53:08 4057

原创 runtime之动态添加方法(动态决议,请求转发)

runtime中实例变量调用方法的步骤:1.在该实例变量的方法缓存列表中查找方法,如果找到就执行。2.如果没找到,会在该类结构的方法列表中查找该方法,如果找到就执行。3.如果没找到,会在该类的父类重复步骤1、2。4.如果知道根类没找到,就会报错:unrecognized selector sent to instance 0x1005046c0.解释:类结构:s

2017-05-21 10:44:43 438

原创 iOS APNS远程推送步骤详析

1.App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请。若注册成功,回调函数application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)

2017-05-21 10:41:33 442

原创 Foundation框架提供的一些基本对象的用法之字符串对象

创建一个字符串对象最简单的方法:使用一对双引号将一组字符串引起来,例如@“Programming is fun”一、不可变字符串对象(NSString)的常用方法  NSString *str1 = @"This is string A";        NSString *str2 = @"This is string B";        NSString *res; 

2015-08-02 12:18:50 506

原创 Foundation框架提供的一些基本对象的用法之数字对象

int型、float型、long型等都是objective-c语言中的基本数据类型,严格的说它们不是对象(不能向他们发送消息)。然而,有时需要将这些值作为对象使用。比如,使用Foundation的NSArray对象创建一个数组,它要求存储的值必须是对象,因此,不能将任何基本数据类型直接存储到数组中。如果需要存储基本数据类型(包括char数据类型),可以使用NSNumber类,它会依据这些数据的

2015-08-01 00:07:09 420

原创 view的触摸事件

/触摸开始时调用-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{   NSLog(@"%s",__func__);// 打印方法}//触摸进行时调用-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)

2015-07-22 23:58:19 571

原创 预处理 宏的小总结

预定义  常量 不能赋值#define TRUE1#define FALSE0不用等号赋值,结尾也没有分号。大多数把预定义放在头文件中,方便在多个源文件中使用。一般用大写字母。或者加k预定义右边不必是合法的表达式,只要使用他的时候,结果表达式正确就行。例子:#define AND &&#define OR ||然后编写

2015-07-22 23:56:22 396

原创 在Xcode中git的简单使用

1.在创建项目的时候,勾选下面的creat git2、当改动自己的代码后(在没有commit的情况下),在左边的对应的文件会出现M3、此时如果想反悔修改后的样子可以:点击discard all changes,这样的话全部都返回改之前的样子了4、如果不想全部返回,只想返回其中一个或几个,可以在上图中选择Discard Changes in

2015-07-22 23:53:24 595

转载 对iOS开发中内存管理的一点总结与理解

做iOS开发也已经有两年的时间,觉得有必要沉下心去整理一些东西了,特别是一些基础的东西,虽然现在有ARC这种东西,但是我一直也没有去用过,个人觉得对内存操作的理解是衡量一个程序员成熟与否的一个标准。好了,闲话不说,下面进入正题。 众所周知,ObjectiveC的内存管理引用的一种叫做“引用计数“ (Reference Count)的操作方式,简单的理解就是系统为每一个创建出来的对象,(这里要注意,

2015-07-22 21:46:42 493

空空如也

空空如也

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

TA关注的人

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