You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
//
|
|
// FLEXObjectRef.m
|
|
// FLEX
|
|
//
|
|
// Created by Tanner Bennett on 7/24/18.
|
|
// Copyright (c) 2018 Flipboard. All rights reserved.
|
|
//
|
|
|
|
#import "FLEXObjectRef.h"
|
|
#import <objc/runtime.h>
|
|
|
|
@implementation FLEXObjectRef
|
|
|
|
+ (instancetype)referencing:(id)object {
|
|
return [[self alloc] initWithObject:object ivarName:nil];
|
|
}
|
|
|
|
+ (instancetype)referencing:(id)object ivar:(NSString *)ivarName {
|
|
return [[self alloc] initWithObject:object ivarName:ivarName];
|
|
}
|
|
|
|
+ (NSArray<FLEXObjectRef *> *)referencingAll:(NSArray *)objects {
|
|
NSMutableArray<FLEXObjectRef *> *refs = [NSMutableArray array];
|
|
for (id obj in objects) {
|
|
[refs addObject:[self referencing:obj]];
|
|
}
|
|
|
|
return refs;
|
|
}
|
|
|
|
- (id)initWithObject:(id)object ivarName:(NSString *)ivar {
|
|
self = [super init];
|
|
if (self) {
|
|
_object = object;
|
|
|
|
NSString *class = NSStringFromClass(object_getClass(object));
|
|
if (ivar) {
|
|
_reference = [NSString stringWithFormat:@"%@ %@", class, ivar];
|
|
} else {
|
|
_reference = [NSString stringWithFormat:@"%@ %p", class, object];
|
|
}
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
@end
|