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];
这两种形式等价。
最新文章
- Django 之 models的 F() 和 Q() 函数
- eclipse中jsp文档无语法着色,安装Eclipse Java Web Developer Tools插件
- webkit浏览器css设置滚动条
- 三、jQuery--jQuery基础--jQuery基础课程--第7章 jQuery 动画特效
- 通过Ruby On Rails 框架来更好的理解MVC框架
- Linux常用命令_(文件权限)
- oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT_数据库的几种锁
- Google Map API v2 番外篇 关于gps位置偏差及修正方法探讨
- BlueJ的code pad
- oracle一直不确定的distinct多字段处理情况整理
- sqoop的导入导出
- python读写excel文件
- Windows平台安装TensorFlow Q&;A
- 【BZOJ1103】大都市 解题报告
- 细说shiro之五:在spring框架中集成shiro
- php值callback类型和匿名函数(闭包)
- python opencv 按一定间隔截取视频帧
- VS中 Winform查看窗体内控件之间的相互关系
- 轻松转移github项目步骤
- C# 解决串口接收数据不完整