1. @interface NSObject <NSObject> {
  2. Class isa OBJC_ISA_AVAILABILITY;
  3. }
  4. // 初始化加载
  5. + (void)load;
  6. // 初始化对象
  7. + (void)initialize;
    // 初始化对象,分配内存
  8. - (instancetype)init;
  9. // 分配一个新的接受类实例,并发送init消息,返回初始化对象
  10. + (instancetype)new;
    // init后系统自动调用该方法,用于内存分配
  11. + (instancetype)allocWithZone:(struct _NSZone *)zone;
    // 内存中为一个对象分配内存,并返回实例
  12. + (instancetype)alloc;
    // 用于类释放对象实例并释放动态内存
  13. - (void)dealloc;
  14. // 标明该对象需要释放
  15. - (void)finalize;
  16. // 复制一个imutable的对象
  17. - (id)copy;
    // 复制一个mutable的对象
  18. - (id)mutableCopy;
  19. // <NSCopying>协议后实现的copy方法
  20. + (id)copyWithZone:(struct _NSZone *)zone;
    // <NSCopying>协议后实现的mutablecopy方法
  21. + (id)mutableCopyWithZone:(struct _NSZone *)zone;
  22. // 类是否存在该方法
  23. + (BOOL)instancesRespondToSelector:(SEL)aSelector;
    // 类是否实现该协议
  24. + (BOOL)conformsToProtocol:(Protocol *)protocol;
    // 返回对象中指定的函数指针
  25. - (IMP)methodForSelector:(SEL)aSelector;
    // 返回类中指定的函数指针
  26. + (IMP)instanceMethodForSelector:(SEL)aSelector;
    // 该对象找不到对应的实现方法时执行该方法,用于抛出异常
  27. - (void)doesNotRecognizeSelector:(SEL)aSelector;
  28. // 若返回非nil,非self,则将详细转发给该对象,否则继续其他流程
  29. - (id)forwardingTargetForSelector:(SEL)aSelector;
    // 与上一个类似,但该方法可转发给多个对象,是最后一个寻找IML的机会
  30. - (void)forwardInvocation:(NSInvocation *)anInvocation;
    // 让重载方有机会抛出函数签名,再由上一个方法执行
  31. - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
  32. // 同上,该方法为类方法
  33. + (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector;
  34. // 对象是否支持weak
  35. - (BOOL)allowsWeakReference UNAVAILABLE_ATTRIBUTE;
    // 对象是否支持retain,weak
  36. - (BOOL)retainWeakReference UNAVAILABLE_ATTRIBUTE;
  37. // 是否为该类的子类
  38. + (BOOL)isSubclassOfClass:(Class)aClass;
  39. // 当执行不存在的类方法时,调用该方法,默认返回NO,加上自己的处理后可返回YES
  40. + (BOOL)resolveClassMethod:(SEL)sel;
    // 同上,但该方法为雷芳法
  41. + (BOOL)resolveInstanceMethod:(SEL)sel;
  42. // hash值
  43. + (NSUInteger)hash;
    // 方法调用者的父类类名
  44. + (Class)superclass;
    // 方法调用者的类名
  45. + (Class)class;
    // 对象描述,可自己实现
  46. + (NSString *)description;
    // 调试对象描述
  47. + (NSString *)debugDescription;
  48.  
  49. @end

协议

  1. @protocol NSObject
  2.  
  3. - (BOOL)isEqual:(id)object;
  4. @property (readonly) NSUInteger hash;
  5.  
  6. @property (readonly) Class superclass;
    // 返回类名
  7. - (Class)class;
    // 是一个指针,地址指向当前类
  8. - (instancetype)self;
  9. // 单线程,等包含该函数的方法执行完后才执行指定的方法
  10. - (id)performSelector:(SEL)aSelector;
    // 同上
  11. - (id)performSelector:(SEL)aSelector withObject:(id)object;
    // 同上
  12. - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
  13. // 对象是否为代理
  14. - (BOOL)isProxy;
  15. // 对象是否为指定类
  16. - (BOOL)isKindOfClass:(Class)aClass;
    // 对象是否为成员类
  17. - (BOOL)isMemberOfClass:(Class)aClass;
    // 是否实现对应协议
  18. - (BOOL)conformsToProtocol:(Protocol *)aProtocol;
  19. // 是否需执行对应方法
  20. - (BOOL)respondsToSelector:(SEL)aSelector;
  21. // 
  22. - (instancetype)retain OBJC_ARC_UNAVAILABLE;
    // 
  23. - (oneway void)release OBJC_ARC_UNAVAILABLE;
    // 
  24. - (instancetype)autorelease OBJC_ARC_UNAVAILABLE;
    // 
  25. - (NSUInteger)retainCount OBJC_ARC_UNAVAILABLE;
  26. // 
  27. - (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
  28.  
  29. @property (readonly, copy) NSString *description;
  30. @optional
  31. @property (readonly, copy) NSString *debugDescription;
  32.  
  33. @end

望指正

NSObject常用方法的更多相关文章

  1. Object-c 语法 - NSObject常用方法和反射

    NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...

  2. iOS-OC-基础-NSObject常用方法

    Person *person1 = [[Person alloc]init]; Person *person2 = [[Person alloc]init]; // 可以调用类中的私有方法,但是会有一 ...

  3. NSObject常用方法和反射

    // 类的反射    NSString *str = @"Person";    Class class = NSClassFromString(str);        Pers ...

  4. Objective-C:Foundation框架-常用类-NSObject

    NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...

  5. NSNumber、NSValue、NSDate、NSObject

    注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...

  6. NSObject和反射

    如何NSObject和反射 NSObject 常用方法 如何判断 某个对象是否属于某个类或子类 -(BOOL)isKindOfClass:(Class)aClass 判断是否为aClass的实例(不包 ...

  7. foundation框架之反射机制

    概念 例子 一.概念 反射:根据字符串实例话对象或者调用方法 // // main.m // 反射机制 // // Created by apple on 14-3-28. // Copyright ...

  8. oc语言的Foundation框架(学习笔记1)

    Foundation框架 1.Foundation框架介绍 框架是由许多类.方法.函数以及文档按照一定的规则组合的起来的集合. cocoa程序编写主要用到2个框架Foundation和Applicat ...

  9. OC常用数据类型大全解

    UI基础 OC常用数据类型 Block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别 ...

随机推荐

  1. 连接器巨头Molex莫仕:替代品厂PK原厂

    序言:在中国电子产业,原厂PK替代品厂一直是一个极具话题性.美国在贸易战背景下,挤压中国的发展空间,迫使这一类企业要觉醒.当然受影响的不止中国电子企业,美国电子企业也一样. 在连接器这一领域,Mole ...

  2. 全网最详细的一篇Flutter 尺寸限制类容器总结

    Flutter中尺寸限制类容器组件包括ConstrainedBox.UnconstrainedBox.SizedBox.AspectRatio.FractionallySizedBox.Limited ...

  3. 端口占用的一种形式 Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8090"] java.net.BindException: Address already in use: JVM_Bind <null>:8090

    严重: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8090"]java.ne ...

  4. getUserMedia API及HTML5 调用手机摄像头拍照

    getUserMedia API简介 HTML5的getUserMedia API为用户提供访问硬件设备媒体(摄像头.视频.音频.地理位置等)的接口,基于该接口,开发者可以在不依赖任何浏览器插件的条件 ...

  5. 一个轻量级的基于 .NET Core 的 ORM 框架 HSQL

    HSQL 是一种轻量级的基于 .NET Core 的数据库对象关系映射「ORM」框架 HSQL 是一种可以使用非常简单且高效的方式进行数据库操作的一种框架,通过简单的语法,使数据库操作不再成为难事.目 ...

  6. Python - 字符串格式化详解(%、format)

    Python在字符串格式化的两种方式 % format %,关于整数的输出 %o:oct 八进制%d:dec 十进制%x:hex 十六进制 print("整数:%d,%d,%d" ...

  7. Python基础-检测密码,一些网站会给密码强加一些规则。

    输入一个字符串,检测是否是合法的密码:1)密码必须包含8个字符2)密码只能包含英文字母和数字3)密码至少包含两个数字 首先我讲一下用到的方法 s为字符串 len(s) 求出字符串的长度. list(s ...

  8. 快速排序python实现总结

    背景:数据结构与算法是IT相关的工程师一直以来的基础考察重点,很多经典书籍都是用c++或者java来实现,出于对python编码效率的喜爱,于是取search了一下python的快排实现,发现大家写的 ...

  9. 添加谷歌拓展程序 vue.js devtools过程中的问题

    在用vue做项目过程中,需要用到vue.js devtools,在从github上面clone下来代码,然后再npm install ,过程报错,然后更新npm包也是会有问题,以下是install的问 ...

  10. 曹工说mini-dubbo(1)--为了实践动态代理,我写了个简单的rpc框架

    相关背景及资源: 之前本来一直在写spring源码解析这块,如下,aop部分刚好写完.以前零散看过一些文章,知道rpc调用基本就是使用动态代理,比如rmi,dubbo,feign调用等.自己也就想着试 ...