Skip to content

Instantly share code, notes, and snippets.

@codetalks-new
Last active March 17, 2016 04:40
Show Gist options
  • Select an option

  • Save codetalks-new/d23f6fdcf4135589a508 to your computer and use it in GitHub Desktop.

Select an option

Save codetalks-new/d23f6fdcf4135589a508 to your computer and use it in GitHub Desktop.

Revisions

  1. codetalks-new revised this gist Mar 17, 2016. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions print_class_hierachy.m
    Original file line number Diff line number Diff line change
    @@ -39,6 +39,7 @@ int main(int argc, const char * argv[]) {
    }

    }
    free(classList);


    }
  2. codetalks-new created this gist Mar 17, 2016.
    46 changes: 46 additions & 0 deletions print_class_hierachy.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    #import <Foundation/Foundation.h>
    @import ObjectiveC;

    void print_class_hierachy(Class cls){
    printf("%s\n",class_getName(cls));
    Class superclass = class_getSuperclass(cls);
    int current_level = 0;
    while (superclass) {
    current_level++;
    for (int level = 0; level < current_level;level++) {
    if(level + 1 == current_level){
    printf("|----");
    }else{
    printf(" ");
    }
    }
    printf("%s\n",class_getName(superclass));
    superclass = class_getSuperclass(superclass);
    }
    }

    int main(int argc, const char * argv[]) {
    @autoreleasepool {
    static unsigned int classCount = 0;
    Class * classList = objc_copyClassList(&classCount);

    int level = 0;
    int min_print_level = 4;
    for (unsigned int i = 0; i < classCount; i++) {
    Class leafClass = classList[i];
    Class superclass = class_getSuperclass(leafClass);
    level = 0;
    while (superclass) {
    level++;
    superclass = class_getSuperclass(superclass);
    }
    if(level >= min_print_level){
    print_class_hierachy(leafClass);
    }

    }


    }
    return 0;
    }