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

望指正

原文地址:https://www.cnblogs.com/nmzd/p/5733827.html