美文网首页面试题
NSProxy 和 NSObject

NSProxy 和 NSObject

作者: y2015 | 来源:发表于2018-02-08 20:23 被阅读118次
NSObject 定义
@interface NSObject <NSObject> {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-interface-ivars"
    Class isa  OBJC_ISA_AVAILABILITY;
#pragma clang diagnostic pop
}

+ (void)load;

+ (void)initialize;
- (instancetype)init;
   .
   .
   .
@end

NSObject还有众多分类,NSObject(NSKeyValueCoding)实现了kvc,NSObject(NSKeyValueObserving)实现了kvo等等功能。

NSProxy定义
@interface NSProxy <NSObject> {
    Class   isa;
}
+ (id)alloc;
+ (id)allocWithZone:(nullable NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ (Class)class;

- (void)forwardInvocation:(NSInvocation *)invocation;
- (nullable NSMethodSignature *)methodSignatureForSelector:(SEL)sel NS_SWIFT_UNAVAILABLE("NSInvocation and related APIs not available");
- (void)dealloc;
- (void)finalize;
@property (readonly, copy) NSString *description;
@property (readonly, copy) NSString *debugDescription;
+ (BOOL)respondsToSelector:(SEL)aSelector;

- (BOOL)allowsWeakReference NS_UNAVAILABLE;
- (BOOL)retainWeakReference NS_UNAVAILABLE;
@end
struct objc_class {
    Class _Nonnull isa  OBJC_ISA_AVAILABILITY;
}

1.根据其没有父类和objc_class定义,可以判断NSObject,NSProxy皆为根类,且均遵守NSObject协议,NSObject协议描述了一个对象所应该具有的内省方法,系统构造类中顶级类已知发现就这两个,当然你也可以自己构造一个顶级类。
2.NSProxy是个抽象类,由于实现的方法很少,因此大多数方法多可以被转发,而NSObject实现方法过多,方法可能会被直接调用,不会被转发。故NSProxy主要目的是用forwardInvocation:方法来进行消息转发。

相关文章

  • 重拾iOS-NSProxy

    关键词:NSProxy,NSObject,Runtime 面试题:1)知道NSProxy吗?2)NSProxy和N...

  • NSProxy 和 NSObject

    NSObject 定义 NSObject还有众多分类,NSObject(NSKeyValueCoding)实现了k...

  • NSProxy、NSInvocation、NSMethodSig

    什么是NSProxy: NSProxy是一个抽象的基类,是根类,与NSObject类似 NSProxy和NSObj...

  • NSProxy 和 NSObject 关系

    一、NSProxy 简介NSProxy 是一个抽象类,它实现了protocol NSObject 所要求的基本方法...

  • 记录NSObject 的关系

    NSObject的关系 NSProxy 没有继承NSObject,只实现了NSObject的协议,所以NSProx...

  • NSProxy

    NSProxy.h文件内容 NSProxy 是一个抽象类NSProxy遵守了 NSObject 协议,内部有它的 ...

  • iOS-isa指针

    iOS所有对象的最终的父类都是NSObject,NSProxy不是NSObject的子类。NSObject有一个数...

  • iOS NSProxy探究

    什么是NSProxy NSProxy是和NSObject同级的一个类,可以说它是一个虚拟类,它只是实现了

  • 底层24:定时器、NSProxy

    NSProxy 它不继承NSObject,没有init方法。专门用来做消息转发。如果你是继承自NSObject,那...

  • iOS中的NSProxy

    NSProxy是和NSObject同级的一个类,可以说它是一个虚拟类,它只是实现了的协议,用来...

网友评论

    本文标题:NSProxy 和 NSObject

    本文链接:https://www.haomeiwen.com/subject/zdiwnttx.html