NSObject常用方法
类
@interface NSObject <NSObject> {
Class isa OBJC_ISA_AVAILABILITY;
}
// 初始化加载
+ (void)load;
// 初始化对象
+ (void)initialize;
// 初始化对象,分配内存
- (instancetype)init;
// 分配一个新的接受类实例,并发送init消息,返回初始化对象
+ (instancetype)new;
// init后系统自动调用该方法,用于内存分配
+ (instancetype)allocWithZone:(struct _NSZone *)zone;
// 内存中为一个对象分配内存,并返回实例
+ (instancetype)alloc;
// 用于类释放对象实例并释放动态内存
- (void)dealloc;
// 标明该对象需要释放
- (void)finalize;
// 复制一个imutable的对象
- (id)copy;
// 复制一个mutable的对象
- (id)mutableCopy;
// <NSCopying>协议后实现的copy方法
+ (id)copyWithZone:(struct _NSZone *)zone;
// <NSCopying>协议后实现的mutablecopy方法
+ (id)mutableCopyWithZone:(struct _NSZone *)zone;
// 类是否存在该方法
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
// 类是否实现该协议
+ (BOOL)conformsToProtocol:(Protocol *)protocol;
// 返回对象中指定的函数指针
- (IMP)methodForSelector:(SEL)aSelector;
// 返回类中指定的函数指针
+ (IMP)instanceMethodForSelector:(SEL)aSelector;
// 该对象找不到对应的实现方法时执行该方法,用于抛出异常
- (void)doesNotRecognizeSelector:(SEL)aSelector;
// 若返回非nil,非self,则将详细转发给该对象,否则继续其他流程
- (id)forwardingTargetForSelector:(SEL)aSelector;
// 与上一个类似,但该方法可转发给多个对象,是最后一个寻找IML的机会
- (void)forwardInvocation:(NSInvocation *)anInvocation;
// 让重载方有机会抛出函数签名,再由上一个方法执行
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
// 同上,该方法为类方法
+ (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector;
// 对象是否支持weak
- (BOOL)allowsWeakReference UNAVAILABLE_ATTRIBUTE;
// 对象是否支持retain,weak
- (BOOL)retainWeakReference UNAVAILABLE_ATTRIBUTE;
// 是否为该类的子类
+ (BOOL)isSubclassOfClass:(Class)aClass;
// 当执行不存在的类方法时,调用该方法,默认返回NO,加上自己的处理后可返回YES
+ (BOOL)resolveClassMethod:(SEL)sel;
// 同上,但该方法为雷芳法
+ (BOOL)resolveInstanceMethod:(SEL)sel;
// hash值
+ (NSUInteger)hash;
// 方法调用者的父类类名
+ (Class)superclass;
// 方法调用者的类名
+ (Class)class;
// 对象描述,可自己实现
+ (NSString *)description;
// 调试对象描述
+ (NSString *)debugDescription;
@end
协议
@protocol NSObject - (BOOL)isEqual:(id)object;
@property (readonly) NSUInteger hash; @property (readonly) Class superclass;
// 返回类名
- (Class)class;
// 是一个指针,地址指向当前类
- (instancetype)self;
// 单线程,等包含该函数的方法执行完后才执行指定的方法
- (id)performSelector:(SEL)aSelector;
// 同上
- (id)performSelector:(SEL)aSelector withObject:(id)object;
// 同上
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
// 对象是否为代理
- (BOOL)isProxy;
// 对象是否为指定类
- (BOOL)isKindOfClass:(Class)aClass;
// 对象是否为成员类
- (BOOL)isMemberOfClass:(Class)aClass;
// 是否实现对应协议
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
// 是否需执行对应方法
- (BOOL)respondsToSelector:(SEL)aSelector;
//
- (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; @property (readonly, copy) NSString *description;
@optional
@property (readonly, copy) NSString *debugDescription; @end
望指正
NSObject常用方法的更多相关文章
- Object-c 语法 - NSObject常用方法和反射
NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...
- iOS-OC-基础-NSObject常用方法
Person *person1 = [[Person alloc]init]; Person *person2 = [[Person alloc]init]; // 可以调用类中的私有方法,但是会有一 ...
- NSObject常用方法和反射
// 类的反射 NSString *str = @"Person"; Class class = NSClassFromString(str); Pers ...
- Objective-C:Foundation框架-常用类-NSObject
NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...
- NSNumber、NSValue、NSDate、NSObject
注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...
- NSObject和反射
如何NSObject和反射 NSObject 常用方法 如何判断 某个对象是否属于某个类或子类 -(BOOL)isKindOfClass:(Class)aClass 判断是否为aClass的实例(不包 ...
- foundation框架之反射机制
概念 例子 一.概念 反射:根据字符串实例话对象或者调用方法 // // main.m // 反射机制 // // Created by apple on 14-3-28. // Copyright ...
- oc语言的Foundation框架(学习笔记1)
Foundation框架 1.Foundation框架介绍 框架是由许多类.方法.函数以及文档按照一定的规则组合的起来的集合. cocoa程序编写主要用到2个框架Foundation和Applicat ...
- OC常用数据类型大全解
UI基础 OC常用数据类型 Block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别 ...
随机推荐
- KEMET推出新的多层陶瓷电容器,用于市电供电的应用
前言:2019年12月2日,全球领先的电子组件供应商KEMET公司 (“ KEMET”或“公司”)推出了一系列新的表面安装设备(SMD)安全认证的多层陶瓷电容器(MLCC),用于市电供电的应用.与现有 ...
- HTML常用标签的使用
一.常见标签详解 1.<iframe>标签 HTML内联框架元素 <iframe> 表示嵌套的浏览上下文,有效地将另一个HTML页面嵌入到当前页面中.在HTML 4.01中,文 ...
- Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize
记录一下: 报错:# Error : Failed to get convolution algorithm. This is probably because cuDNN failed to ini ...
- Codeforces Round #292 (Div. 2) C. Drazil and Factorial 515C
C. Drazil and Factorial time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- mysql 学习日记 悲观和乐观锁
理解 悲观锁就是什么事情都是需要小心翼翼,生怕弄错了出大问题, 一般情况下 "增删改" 都是有事务在进行操作的,但是 "查" 是不需要事务操作的, 但是凡事没 ...
- css3 HSLA 颜色制造半透明效果
简介 HSL色彩模式是工业界的一种颜色标准,是通过对色调(H).饱和度(S).亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色, ...
- python学习基础知识
学习python前最好知道的知识点: python之父:Guido van Rossum python是一种面向对象语言 目前python最新的版本是3.8,python2已经逐渐淘汰 python的 ...
- win10 安装虚拟机提示 主IP地址显示网络信息不可用
问题:在虚拟机详情下面显示 主ip地址:网络信息不可用 解决办法: 先root用户[root@dfhf~]#cd ..[root@dfhf/]#cd /etc/sysconfig/network-sc ...
- Flutter 日期时间DatePicker控件及国际化
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 DatePicker Flutter并没有DatePick ...
- C++ 理解类 和 类中的public、protected、private
我们要明确,不只是C++有类,很多语言也会用到类,因为现在很多都是面向对象编程... 在c++中,关于类的理解,个人理解是这样的,具有共同属性的一个集合被称为类, 比如说人这个集合,具有性别,年龄,出 ...