zoukankan      html  css  js  c++  java
  • IOS开发之NSObject协议类方法说明

    oc中NSObject类是所有类的基类,所有类都要继承自它,那么它的方法就显得特别重要,因为所有类都会有这些基本的方法.

    看看oc的源码中NSObject是这样定义的:

    @interface NSObject <NSObject> {
    
        Class isa  OBJC_ISA_AVAILABILITY;
    
    }

    可以看出,它实现了NSObject协议,下面我们来看看NSObject协议中定义的方法和属性。顺便将它归类为7大类

    @protocol NSObject
    
     //*****1.识别类*****
    @property (readonly) Class superclass;//返回超类对象
    - (Class)class;//返回类对象
    
    //*******2.识别与比较对象**********
    - (BOOL)isEqual:(id)object;//首先判断两个对象是否类型一致,如不一致,直接返回NO,再判断具体内容是否一致
    @property (readonly) NSUInteger hash;//返回一个整数,可以用来作为哈希表结构中的表地址
    - (instancetype)self;//返回当前对象
    
    //**********3.判断继承关系、是否是某类及是否有某种行为(方法)************
    
    - (BOOL)isKindOfClass:(Class)aClass;//判断是否是这个类或者这个类的子类的实例
    - (BOOL)isMemberOfClass:(Class)aClass;//判断是否是这个类的实例 与isKindOfClass的区别在于它只能判断类,不能判断子类
    - (BOOL)respondsToSelector:(SEL)aSelector;//判断是否实现了某方法
    - (BOOL)conformsToProtocol:(Protocol *)aProtocol;//判断是否实现了某协议
    
    //*********4消息传递********
    - (id)performSelector:(SEL)aSelector;//将指定的消息配送到接收器,应用aSelector指定的消息
    - (id)performSelector:(SEL)aSelector withObject:(id)object;//同上 可以接受一参数
    - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; //同上,可接受两对象参数
    
    //*******5属性描述******
    @property (readonly, copy) NSString *description;//对象返回一个字符串来描述它的内容
    @property (readonly, copy) NSString *debugDescription;//返回一个字符串,描述在调试器中的接收器演示的内容
    
    //****6确定代理***********
    - (BOOL)isProxy;//判断是否接收器是否从NSObject继承
    
    //*******7管理内存的方法********************
    - (instancetype)retain OBJC_ARC_UNAVAILABLE;//增加对象的计数器
    - (oneway void)release OBJC_ARC_UNAVAILABLE;//减少对象的计数器
    - (instancetype)autorelease OBJC_ARC_UNAVAILABLE;//自动减少对象的计数器,但是以推迟的方式来实现
    - (NSUInteger)retainCount OBJC_ARC_UNAVAILABLE;//返回一个对象当前的计数器
    - (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;//垃圾自动回收
    
    @end
  • 相关阅读:
    Objective-C之NSArray(数组)默认排序与自定义排序
    Objective-C学习笔记之for( int )机制
    OC之NSString、NSMutableString学习笔记 常用方法
    换行回车的区别 2018-10-30
    Python头部2行 #!/usr/bin/python 和 #!/usr/bin/env 的区别 以及编码方式的指定 2018-10-23
    旧版Windows 睡眠与休眠 2018-10-18
    手机尺寸像素 PPI 2018-10-17
    VMvare 虚拟机扩容 2018-10-11
    批量判断网址能否访问 2018-10-04
    字符串的 strip()方法 2018-10-04
  • 原文地址:https://www.cnblogs.com/hj2xx2hj/p/5036178.html
Copyright © 2011-2022 走看看