1、动态绑定:id类型的对象,表示指向未知类型对象的指针;
指向对象的实际类型在运行时指定。在使用时,注意check该对象是否响应调用的方法(respondsToSelector)。可以将一个静态类型的对象付给id类对象。
[NSArray firstObject]等函数返回值本质上就是id类型。
id本身就是指针类型,所以不存在id *pObject这种写法。
当向id类型的对象发送消息时,编译时不会出现警告,但是若其实际指向的对象没有实际上没有那个方法,则在运行时会崩溃。
2、关于内省(introspection):
内省是对象揭示自己作为一个运行时对象的详细信息的一种能力。这些详细信息包括对象在继承树上的位置,对象是否遵循特定的协议,以及是否可以响应特定的消息,在避免因为调用对象不存在的方法而引发的程序崩溃时可以起到重要作用。主要用到的方法有:
(1)、isKindOfClass:Class:检查对象是否是那个类或者其继承类实例化的对象;
(2)、isMemberOfClass:Class:检查对象是否是那个类但不包括继承类而实例化的对象;
(3)、respondToSelector:selector:检查对象是否包含这个方法;
(4)、conformsToProtocol:protocol:检查对象是否符合协议,是否实现了协议中所有的必选方法。
3、Foundation框架
*NSObject:所有类的基类,实现description、copy/mutableCopy等方法;
*NSArray/NSMutableArray:有序数组;使用for-in循环枚举其中的元素;
*NSNumber:封装过的数值类,可用于整型、实数型、布尔型、枚举型等;
*NSValue:可用于封装一些其他的非基本类型的数据,如C结构体等;
*NSData:二进制数据集合;
*NSDate:日期、时间类;
*NSSet/NSMutableSet/NSOrderedSet/NSMutableOrderedSet:集合类;
*NSDictionary/NSMutableDictionary:键值对集合,对其中的数据存在强引用;
*Property List:一个集合的集合;比如nsarray的成员全部是nsstring,或者nsarray的成员是nsdictionary,其键是nsstring,值是nsnumber;在writeToFile等函数时常用;
*NSUserDefault:Property List的一种轻量化存储方式;用于存储比较简单的数据;
*NSRange:表示位置和长度的C结构体;若没找到则返回值为NSNotFound;
其他还有UIColor、UIFont分别表示颜色和字体;
内容太多了,具体可参考官方文档。
4、Attributed strings
NSAttributedString类:类似于(不同于也没有继承关系,但是可以通过方法返回一个string)NSString,每一个字符都包含一个NSDictionary成员储存了该字符的属性,如字体、字号、下划线、加粗等。可用于button、label、text view等对象中。