// Created by EasyIOS on 14-4-10. // Copyright (c) 2014年 zhuchao. All rights reserved. // #import #import #import "execinfo.h" #import "NSObject+EasyProperty.h" #import "EzSingleton.h" #pragma mark - #undef PRINT_CALLSTACK #define PRINT_CALLSTACK( __n ) [BeeRuntime printCallstack:__n] #undef BREAK_POINT #define BREAK_POINT() [BeeRuntime breakPoint]; #undef BREAK_POINT_IF #define BREAK_POINT_IF( __x ) if ( __x ) { [BeeRuntime breakPoint]; } #undef BB #define BB [BeeRuntime breakPoint]; #pragma mark - @interface BeeTypeEncoding : NSObject AS_INT( UNKNOWN ) AS_INT( OBJECT ) AS_INT( NSNUMBER ) AS_INT( NSSTRING ) AS_INT( NSARRAY ) AS_INT( NSDICTIONARY ) AS_INT( NSDATE ) + (NSUInteger)typeOf:(const char *)attr; + (NSUInteger)typeOfAttribute:(const char *)attr; + (NSUInteger)typeOfObject:(id)obj; + (NSString *)classNameOf:(const char *)attr; + (NSString *)classNameOfAttribute:(const char *)attr; + (Class)classOfAttribute:(const char *)attr; + (BOOL)isAtomClass:(Class)clazz; @end #pragma mark - @interface BeeCallFrame : NSObject AS_INT( TYPE_UNKNOWN ) AS_INT( TYPE_OBJC ) AS_INT( TYPE_NATIVEC ) @property (nonatomic, assign) NSUInteger type; @property (nonatomic, retain) NSString * process; @property (nonatomic, assign) NSUInteger entry; @property (nonatomic, assign) NSUInteger offset; @property (nonatomic, retain) NSString * clazz; @property (nonatomic, retain) NSString * method; + (id)parse:(NSString *)line; + (id)unknown; @end #pragma mark - @interface BeeRuntime : NSObject @property (nonatomic, readonly) NSArray * allClasses; @property (nonatomic, readonly) NSArray * callstack; @property (nonatomic, readonly) NSArray * callframes; AS_SINGLETON( BeeRuntime ) + (id)allocByClass:(Class)clazz; + (id)allocByClassName:(NSString *)clazzName; + (NSArray *)allClasses; + (NSArray *)allSubClassesOf:(Class)clazz; + (NSArray *)allInstanceMethodsOf:(Class)clazz; + (NSArray *)allInstanceMethodsOf:(Class)clazz withPrefix:(NSString *)prefix; + (NSArray *)callstack:(NSUInteger)depth; + (NSArray *)callframes:(NSUInteger)depth; // //+ (void)printCallstack:(NSUInteger)depth; + (void)breakPoint; @end