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可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别 ...
随机推荐
- 前阿里数据库专家总结的MySQL里的各种锁(上篇)
0.前言 MySQL按照加锁的范围,分为全局锁.表级锁.行级锁. 本文作为上篇,主要介绍MySQL的全局锁 和 表级锁. 重要的实战总结为,如何安全地变更一个表的表结构. 1.全局锁 定义: 全局锁就 ...
- removeAttribute getAttribute setAttribute
1.removeAttribute() 方法删除指定的属性. 注:removeAttributeNode() 方法从元素中删除指定的属性节点.简单的来讲,removeAttribute() 移除元素内 ...
- BUI Webapp用于项目中的一点小心得
接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...
- AB实验的高端玩法系列4- 实验渗透低?用户未被触达?CACE/LATE
CACE全称Compiler Average Casual Effect或者Local Average Treatment Effect.在观测数据中的应用需要和Instrument Variable ...
- 《前端之路》 - 初试 TypeScript(一)基础数据类型
一.先讲讲 TypeScript 什么是 typeScript ? typeScript 是 Javascript 的超集 我们用一张图来简单介绍下 ts 和 js 清清楚楚明明白白的关系- 为什么会 ...
- C语言程序设计(七) 函数
第七章 函数 分而治之: 把较大的任务分解成若干较小.较简单的任务,并提炼出公用任务的方法 函数是C语言中模块化程序设计的最小单位,既可以把每个函数都看作一个模块,也可以将若干相关的函数合并成一个模块 ...
- django中CBV源码分析
前言:Django的视图处理方式有两种: FBV(function base views) 是在视图里基于函数形式处理请求. CBV(class base views)是在视图里基于类的形式处理请求. ...
- Tries前缀树
Trie,来源于(retrieval,取回,数据检索),是一种多叉树,用来存储字母表上的单词非常有用. Trie经常用来存储动态集合(dynamic set)或者关联数组(associative ar ...
- 【MVC】使用Jquery缓存数据
前言 最近接手优化页面加载的任务. 分析其中一个原因是菜单页面ajax异步加载,页面很大,但是除非权限更改或者切换角色,否则每次请求返回数据不变,这个完全可以放在客户浏览器内进行缓存. 分析 粗略一分 ...
- react 装 router - yarn add react-router-dom@next
react 装 router yarn add react-router-dom@next