Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions ContentstackPersistence/SyncManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -419,18 +419,22 @@ -(id)parseObject:(id)object forClass:(Class)class {

NSArray *classConformsProtocol(Protocol* protocol, Class superClass) {
NSMutableArray *classesArray = [NSMutableArray array];
int numberOfClasses = objc_getClassList(NULL, 0);
Class *classList = (Class *)malloc(numberOfClasses * sizeof(Class));
numberOfClasses = objc_getClassList(classList, numberOfClasses);

for (int idx = 0; idx < numberOfClasses; idx++)
{
Class class = classList[idx];
if (class_getClassMethod(class, @selector(superclass)) && [superClass isEqual: [class superclass]] && class_getClassMethod(class, @selector(conformsToProtocol:)) && [class conformsToProtocol:protocol])
{
[classesArray addObject:class];
// Get the class list
unsigned int numberOfClasses;
Class *classList = objc_copyClassList(&numberOfClasses);

for (unsigned int idx = 0; idx < numberOfClasses; idx++) {
Class currentClass = classList[idx];
// Check if it's a valid Obj-c class
if (class_respondsToSelector(currentClass, @selector(conformsToProtocol:)) && class_respondsToSelector(currentClass, @selector(superclass))) {
// Check superclass and protocol conformity
if ([superClass isEqual:[currentClass superclass]] && [currentClass conformsToProtocol:protocol]) {
[classesArray addObject:currentClass];
}
}
}

free(classList);
return classesArray;
}
Expand Down