1
This commit is contained in:
62
Pods/LookinServer/Src/Main/Server/Others/LKS_ObjectRegistry.m
generated
Normal file
62
Pods/LookinServer/Src/Main/Server/Others/LKS_ObjectRegistry.m
generated
Normal file
@@ -0,0 +1,62 @@
|
||||
#ifdef SHOULD_COMPILE_LOOKIN_SERVER
|
||||
|
||||
//
|
||||
// LKS_ObjectRegistry.m
|
||||
// LookinServer
|
||||
//
|
||||
// Created by Li Kai on 2019/4/21.
|
||||
// https://lookin.work
|
||||
//
|
||||
|
||||
#import "LKS_ObjectRegistry.h"
|
||||
#import <objc/runtime.h>
|
||||
|
||||
@interface LKS_ObjectRegistry ()
|
||||
|
||||
@property(nonatomic, strong) NSPointerArray *data;
|
||||
|
||||
@end
|
||||
|
||||
@implementation LKS_ObjectRegistry
|
||||
|
||||
+ (instancetype)sharedInstance {
|
||||
static dispatch_once_t onceToken;
|
||||
static LKS_ObjectRegistry *instance = nil;
|
||||
dispatch_once(&onceToken,^{
|
||||
instance = [[super allocWithZone:NULL] init];
|
||||
});
|
||||
return instance;
|
||||
}
|
||||
|
||||
+ (id)allocWithZone:(struct _NSZone *)zone{
|
||||
return [self sharedInstance];
|
||||
}
|
||||
|
||||
- (instancetype)init {
|
||||
if (self = [super init]) {
|
||||
self.data = [NSPointerArray weakObjectsPointerArray];
|
||||
// index 为 0 用 Null 填充
|
||||
self.data.count = 1;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (unsigned long)addObject:(NSObject *)object {
|
||||
if (!object) {
|
||||
return 0;
|
||||
}
|
||||
[self.data addPointer:(void *)object];
|
||||
return self.data.count - 1;
|
||||
}
|
||||
|
||||
- (NSObject *)objectWithOid:(unsigned long)oid {
|
||||
if (self.data.count <= oid) {
|
||||
return nil;
|
||||
}
|
||||
id object = [self.data pointerAtIndex:oid];
|
||||
return object;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#endif /* SHOULD_COMPILE_LOOKIN_SERVER */
|
||||
Reference in New Issue
Block a user