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
  • 相关阅读:
    20080531 Windows 下安装 Bugzilla
    20080823 windows + apache + mod_python 的安装
    20080519 在 Windows Server 2003 下安装 SQL Server 2000 提示“无法验证产品密钥”
    20080508 Borland CodeGear 卖了
    20080520 Javascript 随机数产生办法
    20090613 批量操作 Windows Live Mail 邮件的办法
    20080726 Castle项目创始人加入微软
    20080511 php send_mail()
    20080618 ASP.NET Ajax clientside framework failed to load
    20081105 Microsoft Word 2007 中鼠标操作失效的解决办法
  • 原文地址:https://www.cnblogs.com/hj2xx2hj/p/5036178.html
Copyright © 2011-2022 走看看