DLIntrospection

DLIntrospection

一个简单的  NSObject Category ,提供了一系列扩展函数。

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"
    );

Known issues:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值