NSObject
一、前言
该博客里面的方法均是看着苹果官方的API来解释的,一般都是常用的方法如有问题,请指出。
二、简介:
该类集成的是其本身,大家可以从任何一个类去向上追溯,都会发现最终的父类都是NSObject。
三、常用地方
四、常用方法
1、- (BOOL)isEqual:(id)anobject;
该方法判断两个NSObject(或者其子类)是否相等。返回bool值,如果相等返回YES,不相等返回NO.如果两个NSObject相等,那么他们一定又相同的hash值。
如果anobect为nil,那么将会返回NO.
该方法再ios2和以后存在。
如果想把两个类放到一个集合中,一定要确保为他们两个(或多个)定义了hash值。
2、+ (Class)class; / - (Class)class;
该方法返回该Object的class名称,经常用到的场景是:
BOOL test = [self isKindOfClass:[SomeClass class]];
经常用于判断是否是某个类。
3、- (id)performSelector:(SEL)aSelector;
作用:该方法发送一个特定的消息给接收者,然后返回该消息返回的结果。它等效于直接发送一个aSelector消息给接收者。例如下面的例子,他们是等效的。然而,该方法允许发送一个没有定义的方法直到运行的时候。方法可以当做变量传递。
参数:aSelector:是一个selector标示,如果为空,将会抛出异常NSInvalidArgumentException.
例子:
MyObject *mo = [MyObject new]; [mo sendMessage]; [mo performSelector:@selector(sendMessage)];
4、- (id)performSelector:(SEL)aSelector withObject:(id)object;
5、- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
上面4、5两个方法和3差不多只不过里面可以传入一个参数,两个参数,这里就不多解释了。
6、- (BOOL)isProxy;
作用:该方法的作用是返回一个bool值,即是否是NSObject的后裔。不常用。
7、+ (Class)superclass;
该方法用户得到某个类的父类,IOS8以后才有这个方法。
例如我有一个类继承自NSObject,那么[myClass superclass];它的返回值就是NSObject.
8、+ (BOOL)isSubclassOfClass:(Class)aClass;
该方法用于指定接收者是否是一个类或者相同的类,或者指定的类。
例如:
if ([MyObject isSubclassOfClass:[NSObject class]]) { NSLog(@"MyObject 是NSObject类"); }else { NSLog(@"MyObject 不是NSObject类"); }
我的MyObject是一个继承自NSObject的类,那么该判断返回的结果就是“MyObject 是NSObject类”。
9、+ (NSString *)description;
该方法返回一个代表接收类内容的内容,在不同的类中返回内容可能不同。例如当我们实例化一个UILabel *lab = [UILabel new];时,[lab description]返回的就是该lab的textLabel.text.
10、- (BOOL)isKindOfClass:(Class)aClass;
该方法用于判断某个类对象是否是某个类。
例如:
if([myArr isKindeOfClass:[NSMutableArray class]]) { NSLog(@“是"); }else { NSLog(@“不是"); }
常用于得到网络请求数据后进行判断一下,如果是符合自己要求的类,则进行数据处理,否则进行其他处理。
11、+ (instancetype)new;
该方法的功能是实例化一个对象。 它是alloc和init的组合形式.
例如:
MyObject *mo = [MyObject new];
MyObject *mo = [[MyObject alloc] init];
这两种形式等价。
NSObject的更多相关文章
- YYModel 源码解读(二)之NSObject+YYModel.h (5)
好了,之前的博文中详细的解释了一些辅助的类和辅助的函数,接下来就是使用它们来实现酷炫功能的时候,正所谓磨刀不误砍柴工啊 我们先把总的功能罗列出来 1. json转字典 + ( ...
- YYModel 源码解读(二)之NSObject+YYModel.h (4)
接下来我们继续向下看 typedef struct { void *modelMeta; ///< _YYModelMeta void *model; ///< id (self) voi ...
- YYModel 源码解读(二)之NSObject+YYModel.h (3)
本篇主要介绍的是 在真正转之前的几个辅助函数 /** Get number from property. @discussion Caller should hold strong reference ...
- YYModel 源码解读(二)之NSObject+YYModel.h (2)
_YYModelMeta 这个内部的类主要是对这个类的描述.包含了和此类转换相关的数据. /// A class info in object model. @interface _YYModel ...
- YYModel 源码解读(二)之NSObject+YYModel.h (1)
本篇文章主要介绍 _YYModelPropertyMeta 前边的内容 首先先解释一下前边的辅助函数和枚举变量,在写一个功能的时候,这些辅助的东西可能不是一开始就能想出来的,应该是在后续的编码过程中 ...
- iOS Class 使用NSProxy和NSObject设计代理类的差异
经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并 ...
- iOS 杂笔-24(常用类到NSObject的继承列表)
iOS 杂笔-24(常用类到NSObject的继承列表) NSString NSObject->NSString NSArray NSObject->NSArray ↑OC基本类都直接继承 ...
- @interface NSFileManager : NSObject
@interface NSFileManager : NSObject NSFileManager操作: 1.文件夹创建删除 2.文件创建删除 3.清除数据缓存 以上办法都在这里:https://de ...
- iOS NSObject 的 isa 属性的类型 Class
以前对NSObject的isa属性也知道点,但是了解不深,今天看了这篇博文,感觉很好,总结一下: http://chun.tips/blog/2014/11/05/bao-gen-wen-di-obj ...
- 【原】iOS多线程之NSThread、NSOperationQueue、NSObject和GCD的区别
区别: Thread: 是这几种方式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步.线程共享同一应用程序的部分内存空间, 它们拥有对数据相同的访问权限. ...
随机推荐
- 从零开始学 Web 之 BOM(四)client系列
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- MySQL 解压缩版安装 2017-12-02(完整版,包括异常处理)
一.安装 1.到mysql官网 http://dev.mysql.com/downloads/mysql/ 下载mysql 注:msi的是安装版 zip是压缩版 2.解压 解压到想安装的目录下 ...
- netty源码解解析(4.0)-12 Channel NIO实现:channel初始化
创建一个channel实例,并把它register到eventLoopGroup中之后,这个channel然后处于inactive状态,仍然是不可用的.只有在bind或connect方法调用成功之后才 ...
- SQL 数据库加字段声明
ALTER TABLE dbo.C_TrainPlan ADD MailCost DATETIME EXECUTE sp_addextendedproperty N'MS_Description', ...
- jsp-servlet 的相关请求路径问题 —url
jsp-servlet 的相关请求路径问题 —url 本文章主要解决的几方面问题如下: 常见涉及路径元素: jsp页面请求和servlet请求转发.重定向的关系 如何避免下一步请求受上一步请求在UR ...
- XML 和 JSON
1. XML介绍 必须要有节点:根节点必须且只有一个,用户节点可以自定义. 2. JSON介绍: 3.生成json方法 json_encode() 4.xml生成字符串方法有几种 拼装字符串,或者ph ...
- 【作业一】Android开发环境以及开发前的准备
对于Android平台的开发工具,我知道的就是Eclipse和Android Studio(后面简称AS).之前在学习JAVA时,渐渐习惯了Eclipse,后来要搭建Android的开发环境时,本来也 ...
- Vue性能优化
今天来谈一谈Vue中一些性能优化的问题,仅仅是个人使用中的一些小心得,来,今天我一句废话不多说,直接上内容好吧 1.v-if和v-show的使用, 我们都知道这两个都可以控制显隐,那我们用哪个呢,个人 ...
- 【读书笔记】iOS-优化iOS Web应用
一,代码优化: 代码优化是任何优化技术的第一步,因为归根结底网页上的一切都是构建在代码之上的.优秀的代码可以节省宽带,减少渲染延迟,以及提高页面的可读性和长远的可维护性.下面列出了一些在Web应用中编 ...
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...