自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 iOS多线程中performSelector: 和dispatch_time的不同

iOS中timer相关的延时调用,常见的有NSObject中的performSelector:withObject:afterDelay:这个方法在调用的时候会设置当前runloop中timer,还有一种延时,直接使用NSTimer来配置任务。这两种方式都一个共同的前提,就是当前线程里面需要有一个运行的runloop并且这个runloop里面有一个timer。我们知道:只有主线程会

2015-04-09 20:25:09 464

原创 iOS中的sleep()函数阻塞的是哪个线程

问题:在做多线程开发的时候,测试case里面做一个延迟的操作,想到了sleep()函数,但是又不能确定它到底阻塞的是主线程还是当前线程。分析:于是自己测试了一下,用dispatch_queue_create创建了一个串行队列,然后在这个dispatch_queue_t上执行sleep(10),结果发现阻塞的是这个串行队列,而主线程没有收到影响。而且我在这个串行队列中多次调用sleep(

2015-04-09 16:58:49 6757

原创 plist文件无法打包进.a静态库中

问题:之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的。但是突然有个想法,因为有很多参数的配置是在一个plist文件中的,虽然也知道这是一个plist文件,但是想想和图片资源还是有一定区别的,所以就尝试着能否把plist打进静态库中。分析:1. 创建了一个简单的生成静态库的功能,然后公开了一个接口,用来输出读取plist文件的结果。2. 创建一个简单的

2015-03-18 16:02:26 983

原创 iOS静态库.a不区分ARC和MRC

问题:有同事问:“我们自己开发的SDK是支持ARC还是不支持ARC?”答:“由于之前一直在非ARC环境下开发,故不支持。”问:“那集成到支持ARC的项目中会有问题吗?”答:“不会。”分析:其实ARC只是编译器的特性,在编译代码的过程中会自动在适当的地方添加release之类的语句,它不是真正意义上的gc垃圾回收。而静态库就是编译后的代码,因此是不会有ARC和非ARC之说的。

2015-03-17 18:12:36 1325

原创 AppStore审核新规则:带有版本更新的App将被拒绝

问题:之前上传了一个APP到AppStore上进行审核,过了几天被拒绝了,理由如下:10.6 - Apple and our customers place a high value on simple, refined, creative, well thought through interfaces. They take more work but are worth it. Apple

2015-03-14 13:14:09 5311

转载 ObjC的initialize和init

Objective-C很有趣的一个地方是,它非常非常像C。实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime)。有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性。C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少。Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与。在Obj

2015-03-12 20:28:49 361

转载 xcode-select – 更改默认Xcode

如果你的电脑中有几个xcode版本,比如一个xcode5.1.1,一个xcode6-beta, 当你打开工程的时候,通常会有一个默认配置,或者使用terminal命令行操作,需要选择使用xcode的不同版本,怎么更改这个配置呢? 请看下文:It’s not uncommon developers to have multiple versions of Xcode installed.

2015-03-12 09:59:20 445

转载 ARC中的@property

转自 http://blog.csdn.net/q199109106q/article/details/8565561本章介绍引入ARC后@property的使用,跟ARC之前的还是很不一样的一、.h和.m文件的变化说明1.对于.h头文件,主要是将属性定义由retain变为strong[java] view plain

2015-03-11 18:24:08 361

转载 Xcode工程中ARC的开启和禁止

转自 http://blog.csdn.net/q199109106q/article/details/8565403要想将非ARC的代码转换为ARC的代码,大概有2种方式:1.使用Xcode的自动转换工具2.手动设置某些文件支持ARC一、Xcode的自动转换工具Xcode带了一个自动转换工具,可以将旧的源代码转成ARC模式

2015-03-11 18:17:44 525

转载 ios 比较__unsafe_unretain、__strong、__weak、__autoreleasing

在前面分析了nomantic、copy、retain等属性之后,在教新的XCode版本中,我们又经常会看到__unsafe_unretain、__strong、__weak、__autoreleasing这四种属性,那么他们有什么用呢?__unsafe_unretain、__strong、__weak、__autoreleasing是出现在 LLVM 编译器 3.0版本之后。而__unsa

2015-03-11 18:05:07 391

转载 Objective-C属性修饰符strong和copy的区别

问题描述在定义一个类的property时候,为property选择strong还是copy特别注意和研究明白的,如果property是NSString或者NSArray及其子类的时候,最好选择使用copy属性修饰。为什么呢?这是为了防止赋值给它的是可变的数据,如果可变的数据发生了变化,那么该property也会发生变化。代码示例还是结合代码来说明这个情况@interfa

2015-03-11 17:34:02 370

原创 MKNetworkKit 的使用

现在,大家使用最多的网络框架基本上就是AFNetworking,ASIHttpRequest,MKNetWorkKit等。ASIHttpRequest功能很强大,早期的项目使用的较多,只是后续不再更新维护了,因此已成为过去时。而AFNetworking采用了block模式,代码的紧凑性和可读性得到了大幅度的提升,现在手头上的几个项目就使用了这个框架。该框架不提交接口数据缓存功能,可以通

2015-03-11 15:39:49 613

转载 NSPredicate(过滤器)

第十七章  NSPredicate编写软件时,经常需要获取一个对象集合,然后删除不满足条件的对象,保留符合条件的对象,从而提供一些有意义的对象。Cocoa提供了一个名为NSPredicate的类,他用于指定过滤器的条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断他们是否与条件相匹配。Cocoa用NSPredicate描述查询的方

2015-03-11 14:23:53 596

转载 在Cocoa Touch框架中使用迭代器模式

苹果公司用自己的命名规则“枚举器/枚举”改写了迭代器模式,用于相关基础类的各种方法。从现在开始,我将使用“枚举”一词,它就是苹果版本的“迭代”。在这个模式中它们是一个意思。基础框架中的NSEnumerator类实现了迭代器模式。抽象NSEnumerator类的私有具体子类返回枚举器对象,能够顺序遍历各种集合——数组、集(set)、字典(值与键),把集合中的对象返回给客户端。NSDirect

2015-03-11 14:08:26 434

转载 详解键值观察(KVO)及其实现机理

文章转自 http://www.cppblog.com/kesalin/archive/2012/11/17/kvo.html [深入浅出Cocoa]详解键值观察(KVO)及其实现机理罗朝辉 (http://www.cppblog.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议一,前言Objective-C 中的

2015-03-11 13:47:30 321

原创 self在类方法和实例方法中的解读

类方法里面的self,是Class;实例方法里面的self,是对象的首地址。尽管在同一个类里面的使用self,但是self却有着不同的解读。在类方法里面的self,可以翻译成Class self;在实例方法里面的self,应该被翻译成为object self。在类方法里面的self和实例方法里面的self有着本质上的不同,尽管他们的名字都叫self。

2015-03-10 17:34:26 497 1

原创 Objective-C中[self self]的含义

问题:在分析MKNetworkKit源码的时候,遇到下面这段代码:+(void) initialize { if(!_sharedNetworkQueue) { static dispatch_once_t oncePredicate; dispatch_once(&oncePredicate, ^{ _sharedNetworkQueue = [[N

2015-03-10 16:58:24 446

原创 Objective-c中的posing

谈到这个posing,真是有些惭愧,还没了解这个是怎么回事,就已经被苹果给抹去了。尽管如此,还是整理了一些文章,以供参考。===================================================================Posing,顾名思义,意思是“冒充”,它跟categories类似,但本质上不一样,Posing存在的目的在于子类可以冒充

2015-03-09 17:31:26 606

转载 Obj-C的多态性、动态类型和动态绑定

Obj-C是一门强大的面向对象的编程,因此它具有面向对象的很多特征,比如多态性,支持动态类型和动态绑定。我们来分别学习一下:1. 多态性多态性是个生物名词,用来表示生物体在生命周期中的不同形态,用在编程语言中则表示相同的方法名,但是却有不同的实现方式。或者说相同的名字,不同的类。我们来看一个书上的示例:01#import

2015-03-09 16:49:53 482

转载 iOS中类工厂方法介绍

类工厂的主要理念在于产生并返回一个特定类的实例对象,并在产生对象时尽可能的预填充数据。相比调用 alloc/init 再设置特性,使用类工厂的一个显而易见的好处就是,你的代码将会缩短很多。 这样,你就能使用一个方法来创建一个对象并初始化它的所有特性,而不需要用一个方法来创建对象,再用很多行代码来设置各种特性。与此同时,这种技术还有两个不太明显的好处。 其一,它强制了

2015-03-09 16:31:16 1669

转载 堆和栈的区别(转过无数次的文章)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2015-03-09 15:44:00 424

转载 HTTP POST GET 本质区别详解

一 原理区别    一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETEURL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POS

2015-03-09 15:33:00 351

转载 进程和线程的联系和区别

定义:一、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。二、线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程;进程和线程的关系:(1)一个线程只能

2015-03-07 22:44:47 391

原创 Objective-C中的static用法

Objective-C中的static变量表示的是类变量,仅初始化并存储一次,该类的所有实例共享该变量。一般都定义在.m文件中,函数体之中或函数体之外。定义在函数体之中的static变量(局部静态变量),其作用域就是所在的函数体,即仅在所在函数体内可用。定义在函数体之外的static变量(全局静态变量),可以被所在类的所有方法访问。但是这两种方式定义的static变量都不可被其他类直接访问。

2015-03-07 22:25:24 724

转载 TCP/IP协议与UDP协议的区别

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送

2015-03-05 15:06:18 370

原创 NSDictionary或者NSArray中包含NSNull对象,无法写入文件

场景:使用AFNetworking2.0+时,调用POST方法来请求数据,为了支持离线浏览,准备将返回的responseObject写入本地文件进行保存。问题:已确认responseObject的class是NSDictionary,但是使用-writeToFile:atomically:方法总是返回NO,也就是写入失败。自己尝试自定义一个NSDictionary,结果是成功的。分析:自定

2015-03-05 09:41:40 1123

转载 iOS GCD使用指南

GCD开发

2015-02-27 18:24:46 342

转载 QQ 通信协议

QQ 通信协议

2015-02-27 11:08:40 516

转载 Google Protocol Buffer 的使用和原理

Google Protocol Buffer 的使用和原理

2015-02-27 11:07:05 285

空空如也

空空如也

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

TA关注的人

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