• 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

    望指正

  • 相关阅读:
    redis配置引发的问题
    String类的split()方法
    修改mysql编码配置文件不生效
    mysql性能优化小知识点
    limit使用
    mysql执行顺序
    记录一个不知名的错误
    子数组最大和及下标
    maven项目中不能加载java目录下的配置文件
    判断树是否为搜索树
  • 原文地址:https://www.cnblogs.com/nmzd/p/5733827.html
Copyright © 2020-2023  润新知