Coder Social home page Coder Social logo

dlintrospection's Introduction

DLIntrospection

Simple NSObject-category wrapper for <objc/runtime.h> for methods/ivars/protocols/etc. listing. Automatically (often) resolves return types and argument types.

Usage

Type the following commands in LLDB command promt:~ po [NSObject classes]

...
UIDateLabel,
UIDatePicker,
UIDatePickerContentView,
UIDevice,
UIDictationMeterView,
UIDictationPhrase
...

Lets list UIDevice instance methods:

~ po [[UIDevice class] instanceMethods]
...
- (BOOL)isMediaPicker,
- (void)setIsMediaPicker:(BOOL)arg0 ,
- (id)systemVersion,
- (void)_unregisterForSystemSounds:(id)arg0 ,
- (void)_registerForSystemSounds:(id)arg0
...

Or instance variables:

~ po [[UIDevice class] instanceVariables]
int _numDeviceOrientationObservers,
float _batteryLevel

What properties (including private, of course) implements UIViewController?

~ po [[UIDevice class] properties]
@property (nonatomic, assign, readonly) BOOL _useSheetRotation,
@property (nonatomic, copy) @? afterAppearanceBlock,
...
@property (nonatomic, assign) {CGSize=ff} contentSizeForViewInPopover,
@property (nonatomic, assign, getter=isInAnimatedVCTransition) BOOL inAnimatedVCTransition,
@property (nonatomic, assign, readonly) BOOL inExplicitAppearanceTransition

What protocols implements NSData?

po [NSData protocols]
NSCopying,
NSMutableCopying,
NSSecureCoding <NSCoding>

Even cooler, let's see at protocol information (lists @required, @optional methods and @properties):

NSLog(@"%@", [NSObject descriptionForProtocol:@protocol(NSObject)]);
    "@required" =     (
        "- (void)debugDescription",
        "- (void)zone",
        "- (void)performSelector:withObject:withObject:",
        "- (void)description",
        ...
        "- (void)performSelector:",
        "- (void)performSelector:withObject:",
        "- (void)self",
        "- (void)conformsToProtocol:",
        "- (void)class"
    );

Bindings:

There also exists an OCaml binding so you can play use the code interactively with the utop repl, see here under the Introspect module.

Known issues:

  1. Not all argument types are handled yet (structs, bitmasks);
  2. return and arguments types of protocol methods are not parsed yet.

LICENSE

Beerware

dlintrospection's People

Contributors

delebedev avatar fxfactorial avatar bryant1410 avatar broccolii avatar

Watchers

James Cloos avatar WuZhen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.