摘要: 代码块是对函数的一种扩展,但是比c语言中的函数指针高级多了。1.声明和定义。returnType (^blockName)(list of arg) = ^returnType(list of arg){body;};其中右边的returnType可以省略,因为编译器可以通过代码块的声明来推断函数的... 阅读全文
posted @ 2015-02-08 23:54 52xpz 阅读(212) 评论(0) 推荐(0) 编辑
摘要: C++以纯虚函数来定义抽象接口,继承了抽象接口的类必须要实现所有父类的纯虚函数。OC中的协议类似于C++的纯虚函数。1.声明协议。@protocol后面接协议的名称。@protocol NSObject@end如果一个协议继承于另外一个协议,声明方法为尖括号里面填入父协议名称。@protocol S... 阅读全文
posted @ 2015-02-08 22:06 52xpz 阅读(950) 评论(0) 推荐(0) 编辑
摘要: 封装的特性就是暴露公共接口给外边调用,C++通过public定义公共方法提供给外面调用,protected和private定义的方法只能在类里面使用,外面不能调用,若外面调用,编译器直接报错,对于变量也同理。OC里面类扩展类似protected和private的作用。1.类扩展是一种特殊的类别,在定... 阅读全文
posted @ 2015-02-05 22:37 52xpz 阅读(4481) 评论(0) 推荐(0) 编辑
摘要: 由于OC里面没有命令空间这种利器来避免名字空间,所以得特别注意名字污染,一般的命令约定由如下几条:1.类、类别、协议的命名在整个工程里面必须保持全局唯一。以前缀开始并且以大写字母开头,比如XPZMyPerson;2.类方法和属性的命名以小写字母开头,多个单词组成的方法和属性名称遵循camel cas... 阅读全文
posted @ 2015-02-04 14:53 52xpz 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1.为什么要有类别?在现有类的基础上做扩展,可以采用继承和组合两种方法来实现,但是OC为什么还要有类别这种方式呢?想想这样一个应用场景,要创建一个字典,key是字符串,value是字符串的长度。一般的做法是: NSMutableDictionary *dict = [NSMutable... 阅读全文
posted @ 2015-02-01 23:29 52xpz 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 1.类里面经常有一些变量需要进行set和get操作,OC中提供了方便的属性@property来替换set和get方法,这样能减少频繁且简单的重复代码。如下代码:@interface Person : NSObject@property NSString* strName;@property int ... 阅读全文
posted @ 2015-02-01 22:13 52xpz 阅读(494) 评论(0) 推荐(0) 编辑
摘要: 1.OC中可以通过new或者alloc来创建对象,new和alloc执行的操作是从操作系统获得一块内存并且把这块内存清零了。OC中会把内存清零,这点跟C++不一样。2.C++通过构造函数来执行对象的初始化工作,构造函数先执行父类的构造然后再初始化自己。OC中没有构造函数这个概念,它是通过init方法... 阅读全文
posted @ 2015-02-01 18:00 52xpz 阅读(181) 评论(0) 推荐(0) 编辑
摘要: Foundation Kit是OS X类库和IOS类库共享的基础类库,里面提供了很多封装类,具体可以见https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/ObjC_classic/,下面介绍... 阅读全文
posted @ 2015-01-25 18:53 52xpz 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 1.上篇我们讲了OC中的内存管理基础,我们再总结一下何时该用内存管理。1)当用new、alloc、copy创建对象时,必须要释放对象。2)当拥有对象时,如果是临时对象,不需要释放;当需要长时间保留对象时,必须保留对象并且在dealloc方法中释放对象。2.OC中的垃圾回收机制OC2.0引入了垃圾回收... 阅读全文
posted @ 2015-01-25 14:15 52xpz 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 1.内存存储区域C、C++里面。栈区:存储临时变量和对象。堆区域:存储动态分配对象。静态变量存储区:存储静态变量和常量对象。OC里面的内存存储区域跟C、C++一样。2.为什么要进行内存管理写过C、C++程序的都知道,内存管理永远是C++程序的一大痛点,项目当中崩溃全部来自于内存相关的操作,尤其是指针... 阅读全文
posted @ 2015-01-24 22:25 52xpz 阅读(438) 评论(0) 推荐(2) 编辑