2012年5月29日

摘要: 版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08二口诀与范式1口诀。1.1谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或a 阅读全文
posted @ 2012-05-29 07:01 wenxp2006 阅读(179) 评论(0) 推荐(0) 编辑
 
摘要: 版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08前言初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Class 阅读全文
posted @ 2012-05-29 06:59 wenxp2006 阅读(163) 评论(0) 推荐(0) 编辑
 

2012年5月27日

摘要: 虚函数:为了方便使用多态特性,常常需要在基类中定义虚函数。纯虚函数:1、原因与虚函数相同;2、在很多情况下,基类本身生成的对象是不合理的;虚函数与纯虚函数的区别:1、类里声明为虚函数的话,这个函数是实现的,哪怕是一个空实现,它的作用就是为了能让这个函数在它的子类里面可以被重载,这样的话,编译器就可以在使用后期绑定来达到多态效果;纯虚函数只是一个接口,是个函数的声明而已,要留在子类里面去实现。2、虚函数也可以在子类里面不重载;但纯虚函数必须在子类里面去实现。通常我们把很多函数加上virtual,这是一个好的习惯,虽然牺牲了一些性能,但是增加了面向对象的多态性,因为很难预料到父类里面的这个函数不用 阅读全文
posted @ 2012-05-27 19:47 wenxp2006 阅读(255) 评论(0) 推荐(0) 编辑
 

2012年5月23日

摘要: 协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。举个浅显的例子: 我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。 即:我.... 阅读全文
posted @ 2012-05-23 14:59 wenxp2006 阅读(251) 评论(0) 推荐(0) 编辑
 

2012年5月15日

摘要: iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 之前不支持ARC)strong 用来修饰强引用的属性;@property (strong) SomeClass * aObject;对应原来的@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;weak 用来修饰弱引用的属性;@property (weak) SomeClass * aObject;对应原来的@property (assign) SomeClass * aObject;__weak, __ 阅读全文
posted @ 2012-05-15 21:15 wenxp2006 阅读(1289) 评论(0) 推荐(0) 编辑
 
摘要: (1) Memset原型: extern void *memset(void *buffer, int c, int count); 用法:#include <string.h> 功能: 把buffer所指内存区域的前count个字节设置成字符 c。 说明: 返回指向buffer的指针。用来对一段内存空间全部设置为某个字符 例如: char a[10]; memset(a, '\0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如:struct _test{char ... 阅读全文
posted @ 2012-05-15 06:14 wenxp2006 阅读(367) 评论(0) 推荐(0) 编辑
 

2012年5月14日

摘要: 前言 本文主要介绍面向对象(OO)程序设计,以维基百科的解释:面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 简略来说,面向对象程序设计,指采用了面向对象的方法来进行程序设计。设计指一种把计划、规划、设想通过视觉传达出来的活动过程,它是一种创造性,积累性,实践性的工作。提笔写设计的文章是很有压力的,它不像深入一个知识点一样让人容易有的放矢,一千个读者心中有一千个哈姆雷特,同样的项目两个人来做架构肯定不一样。包.. 阅读全文
posted @ 2012-05-14 15:41 wenxp2006 阅读(194) 评论(0) 推荐(0) 编辑
 
摘要: 软件危机(Software Crisis)软件技术总是处于不断发展变化中,新工具、新技术相继产生。这就要求软件产业和软件工程师们不停的寻求软件设计和开发的新途径。由于日益增长的软件系统的复杂性和软件产业内部愈演愈烈的竞争,这种要求变得更加紧迫。为了克服这种要求带来的软件危机,必须解决以下问题:1、在系统设计中,如何表现问题的真实实体?2、如何以开放的界面(interface)设计系统?3、如何保证模块(module)的可重用性(reusability)和可扩展性(extensibility)?4、如何开发能够容忍(tolerant)未来可能的变化模块?5、如何提高软件的生产力和减少软件开销?6 阅读全文
posted @ 2012-05-14 15:40 wenxp2006 阅读(185) 评论(0) 推荐(0) 编辑
 
摘要: 数据结构的栈和堆首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈就像装数据的桶或箱子我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。堆像一棵倒过来的树而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实 阅读全文
posted @ 2012-05-14 15:19 wenxp2006 阅读(263) 评论(0) 推荐(0) 编辑
 
摘要: C语言关键字const是用来限定一个变量不允许被改变的修饰符,当它和指针结合的时候有下面2种情况:1、const放在*前面, const char *p1, p1表示指向常量的指针,这时p1本身可以变化,也就是可以重新指向,但是指向的内容不能修改const char *p1 = "hello";p1++; // okp1[0] = 'w'; // compile error2、const放在*后面, char* const p1, 意思是p1是一个const指针,指向一个字符串,这时p1本身不能改变但是指向的内容可以变化,也就是如下代码1 char* con 阅读全文
posted @ 2012-05-14 15:03 wenxp2006 阅读(249) 评论(0) 推荐(0) 编辑