摘要: KVC(key value coding)我们一般是通过调用set方法或属性的点语法来直接更改对象的状态,即对象的属性值,比如[stu setAge:10]; stu.age = 9;lKVC,它是一种间接更改对象状态的方式,其实现方法是使用字符串来描述对象需要更改的属性。KVC中的基本调用包括valueForKey:和setValue:ForKey:,以字符串的形式向对象发送消息l这里以Student和Card为例子KVC可以对对象进行批量更改l例如,同时获取Student的age和nameNSArray *keys = [NSArray arrayWithObjects:@"na 阅读全文
posted @ 2014-02-23 21:57 吃肉的核桃 阅读(344) 评论(0) 推荐(0) 编辑
摘要: /*******************************快速排序start**********************************///随即取当前取第一个,首先找到第一个的位置,然后分成left和right两组子集,分别对left和right继续执行分割(同上操作)-(void)QuickSort:(NSMutableArray*)listStartIndex:(NSInteger)startIndexEndIndex:(NSInteger)endIndex{if(startIndex>=endIndex)return;NSNumber*temp=[listobjec 阅读全文
posted @ 2014-02-23 18:55 吃肉的核桃 阅读(1504) 评论(0) 推荐(0) 编辑
摘要: 一、imageNamed——方法介绍imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些。它的加载流程如 下:1、系统回去检查系统缓存中是否存在该名字的图像,如果存在则直接返回。2、如果系统缓存中不存在该名字的图像,则会先加载到缓存中,在返回该对象。 观察上面的操作我们发现系统会缓存我们使用imageNamed:方法加载的图像时候,系统会自动帮我们缓存。这种机制适合于那种频繁 用到界面贴图累的加载,但如果我们需要短时间内频繁的加载一些一次性的图像的话,最好不要使用这种方法。二、imageWithContentsOfFile:和initWithContentsO 阅读全文
posted @ 2014-02-23 18:29 吃肉的核桃 阅读(232) 评论(0) 推荐(0) 编辑
摘要: iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。//开发app,我们要遵循apple公司的一些指导原则,原则如下:1、应用程序的状态状态如下:Not running 未运行 程序没启动Inactive 未激活 程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态Active 激活 程序在前台运行而且接收到了事件。这也是前台的一个... 阅读全文
posted @ 2014-02-23 17:22 吃肉的核桃 阅读(223) 评论(0) 推荐(0) 编辑
摘要: Run LoopsRun loops是线程相关的的基础框架的一部分。一个run loop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。Run loop的管理并不完全自动的。你仍然需要设计你的线程代码在合适的时候启动run loop并正确响应输入事件。Cocoa和Core Fundation都提供了run loop objects来 帮助配置和管理你线程的run loop。你的应用程序不需要显式的创建这些对象(run loop objects);每个线程,包括程序的主线程都有与之对应的run 阅读全文
posted @ 2014-02-23 16:36 吃肉的核桃 阅读(257) 评论(0) 推荐(0) 编辑
摘要: iOS平台内存常见问题作为iOS平台的开发者,是否曾经为内存问题而苦恼过?内存莫名的持续增长,程序莫名的crash,难以发现 的内存泄漏,这些都是iOS平台内存相关的常见问题;本文将会详细介绍iOS平台的内存管理机制,autorelease机制和内存的使用陷阱,这些将会 解决iOS平台内存上的大部分问题,提高了程序的稳定性;1 iOS平台内存管理介绍iOS平台的内存管理采用引用计数 的机制;当创建一个对象时使用alloc或者allWithZone方法时,引用计数就会+1;当释放对象使用release方法时,引用计数就是-1; 这就意味着每一个对象都会跟踪有多少其他对象引用它,一旦引用计数为0, 阅读全文
posted @ 2014-02-23 16:28 吃肉的核桃 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题。将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好。下面介绍一下数据保存的方式:1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。例如对Possession对象归档保存。定义Possession:@interface Possession:NSObject{//遵守NSC 阅读全文
posted @ 2014-02-23 16:09 吃肉的核桃 阅读(479) 评论(0) 推荐(0) 编辑
摘要: Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,即release栈由编译器管理自动释放的,在方法中(函数体)定义的变量通常是在栈内,因此如果你的变量要跨函数的话就需要将其定义为成员变量。1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注堆和数据结构中的堆栈不一样,其类是与链表。操作系统iOS中应用程序使用的计算机内存不是统一分配空间,运行代码使用的空间在三个不同的内存区域,分成三个段:“text segment“,“ 阅读全文
posted @ 2014-02-23 13:04 吃肉的核桃 阅读(383) 评论(1) 推荐(1) 编辑
摘要: 1. 变量的@public @private @package @protected 声明有什么含义?@public 可以被所有的类访问@private 只有该类的方法可以访问,子类的都不能访问@protected 该类和所有类的方法可以直接访问@package 一个@package实例变量在实现这个类的可执行文件镜像中实际上是@public的,但是在外面就是@private,,Objective-C中的 @package与C语言中变量和函数的private_extern类似。任何在实现类的镜像之外的代码想使用这个实例变量都会引发link error,这个类型最常用于框架类的实例变量,使用@p 阅读全文
posted @ 2014-02-23 12:05 吃肉的核桃 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 1.在ARC项目中使用非ARC框架或者类库IOS 4引入了Automatic Reference Count(ARC),编译器可以在编译时对obj-c对象进行内存管理。之前,obj-c的内存管理方式称作引用计数,就是obj-c对象每被”使用”一次,引用计数+1,当引用计数为0时,系统会回收内存.用程序语言表达,就是allco的要release,retain/copy的要release.还有某些容器add的,也要release等等.那么在现有的ARC项目中,如何引用非ARC的第三方框架或者类库呢?答案很简单,只需在TARGETS里的Build Phases中,找到 Compile Sources 阅读全文
posted @ 2014-02-23 11:08 吃肉的核桃 阅读(535) 评论(0) 推荐(0) 编辑