NS类 - 父类和子类的关系

标签:
nsobject父类和子类的关系it |
分类: Mac/IOS那些事 |
·
·
2. |--初始化 析构
+(void) load
作用:类加载到运行时环境时发送该消息
说明:
·
·
+ (void)initialize;
作用:在类第一次使用的时候发送该消息
说明:父类会被先掉,所以子类initialize函数不需要发送父类initialize消息。
+ (id)alloc;
作用:返回一个已经分配好内存的实例
- (id)init;
作用:对已经分配了内存的实例进行初始化(相当于构造函数),不一定要默认的构造函数,也可以自己写(一般就是加一些参数)。
常见形式:
- (id)init{
}
作用:同时调用了alloc和init。
- (void)dealloc;
作用:析构函数
3. |--拷贝
+ (id)copyWithZone:(NSZone *)zone;
作用:拷贝函数。类中重载改函数,copy的时候会调用该函数
说明:
·
·
sample:
MyClass:NSObject
MyClass2:MyClass
-(id)copyWithZone:(NSZone *)zone
{
}
-(id)copyWithZone:(NSZone *)zone
{
}
作用:发送接收者定义的copyWithZone:nil消息;
+ (id)mutableCopyWithZone:(NSZone *)zone;
作用:和copyWithZone一样起拷贝作用;
说明:
·
·
- (id)mutableCopy;
作用:调用mutableCopyWithZone:nil
4. |--运行时状态
说明:运行时状态可以在运行时获得对象的层次关系,确定对象是否实现某写方法,测试协议等。在写框架的时候很有用。
- (Class)class;
+ (Class)class;
作用:返回当前对象所属类
- (Class)superclass;
+ (Class)superclass;
作用:返回当前对象的父类
- (BOOL)isKindOfClass:(Class)aClass;
作用:判定receiver是否为aClass或其子类的实例
- (BOOL)isMemberOfClass:(Class)aClass;
作用:判定receiver是否为aClass的实例
+ (BOOL)isSubclassOfClass:(Class)aClass
作用:判定是否为aClass的子类
说明:只有类方法
- (BOOL)respondsToSelector:(SEL)aSelector;
作用:判断receiver是否响应某消息
注意:
+ (BOOL)instancesRespondToSelect
作用:判断类的对象是否响应某消息
注意:不包括类方法
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
作用:判断是否实现某协议
说明:参数可以用@protocal(协议名称)制作
- (NSString*)description;
作用:返回一串对象的描述,描述中包含了对象的详细信息(方便用于调试)
5. |--比较
要重载比较最好先重载-(NSComparisonResult)compare:(id)object
- (NSUInteger)hash;
作用:返回一串数,代表对象的hash值
- (BOOL)isEqual:(id)object;
作用:比较两个对象是否相同
说明:默认是用地址进行比较,且hash值一定要相同
6. |--对象编解码
§
- (void)encodeWithCoder:(NSCoder *)aCoder;
作用:定义对象的编码,即对象的哪些属性是需要保存下来的
- (id)initWithCoder:(NSCoder *)aDecoder;
作用:定义对象的解码,即取出的每一条属性要存放到哪些变量中,进而初始化对象
注意:对象的属性要retain下来
7. |--对象内存管理
- (id)retain;
- (onewayvoid)release;
- (id)autorelease;
- (NSUInteger)retainCount;
说明:详情见《内存管理》
8.|--异常处理
其他
NSObject还有几个其它的方法,包括一些处理版本和姿态(后者使一个类在运行时将自己表示为另一个类)的类方法,以及一些访问运行时数据结构的方法,比如方法选择器和指向方法实现的函数指针
isKindOfClass: and isMemberOfClass:; the latter method is for testing whether the receiver is an instance of the specified class. The class methodisSubclassOfClass: tests class inheritance.
这三个函数的区别 iskindofclass可以判断某个实例是否属于某个类或者子类
isMemberOfClass只能判断个实例是否属于某个类 不能判断是否属于某个父类
isSubclassOfClass判定是否为某个类的子类
NSLog(@"output self class name%@",[selfclass]);
http://s9/mw690/79fded95gdbeed3cfb0b8&690-