forked from calebd/SimpleAuth
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNSObject+SimpleAuthAdditions.m
More file actions
50 lines (43 loc) · 1.31 KB
/
NSObject+SimpleAuthAdditions.m
File metadata and controls
50 lines (43 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// NSObject+SimpleAuthAdditions.m
// SimpleAuth
//
// Created by Caleb Davenport on 1/20/14.
// Copyright (c) 2014 Byliner, Inc. All rights reserved.
//
#import "NSObject+SimpleAuthAdditions.h"
#import "SimpleAuthWebViewController.h"
#import <objc/runtime.h>
@implementation NSObject (SimpleAuthAdditions)
+ (void)SimpleAuth_enumerateSubclassesWithBlock:(void (^) (Class klass, BOOL *stop))block {
int numberOfClasses = objc_getClassList(NULL, 0);
Class allClasses[numberOfClasses];
objc_getClassList(allClasses, numberOfClasses);
for (int i = 0; i < numberOfClasses; i++) {
Class klass = allClasses[i];
BOOL stop = NO;
if (SimpleAuthClassIsSubclassOfClass(klass, self)) {
block(klass, &stop);
if (stop) {
return;
}
}
// else if(class_conformsToProtocol(klass, @protocol(SimpleAuthWebViewController)))
// {
// block(klass, &stop);
// }
}
}
@end
static inline BOOL SimpleAuthClassIsSubclassOfClass(Class classOne, Class classTwo) {
Class superclass = class_getSuperclass(classOne);
if (superclass == classTwo) {
return YES;
}
else if (superclass == Nil) {
return NO;
}
else {
return SimpleAuthClassIsSubclassOfClass(superclass, classTwo);
}
}