Приватные методы для отладки

    Наверняка уже все знают, что у UIView есть полезный метод recursiveDescription.
    Вызов которого, вернет строку с описанием всей иерархии вью.

    (lldb) po [[self view] recursiveDescription]
    <UIView: 0x6a107c0; frame = (0 20; 320 460); autoresize = W+H; layer = […]
       | <UIRoundedRectButton: 0x6a103e0; frame = (124 196; 72 37); opaque = NO; […]
       |    | <UIButtonLabel: 0x6a117b0; frame = (19 8; 34 21); text = 'Test'; […]
       .....
    

    Еще многие знают, что при помощи рантайма, можно получить список переменных/методов/свойств/протоколов/… класса. И обычно для этих целей пишут вспомогательный код. Но оказывается, все уже давно написано сотрудниками Apple. В UIKit.framework реализована категория с именем IvarDescription.

    @interface NSObject (IvarDescription)
    - (id)_shortMethodDescription;
    - (id)_methodDescription;
    - (id)__methodDescriptionForClass:(Class)arg1;
    - (id)_ivarDescription;
    - (id)__ivarDescriptionForClass:(Class)arg1;
    @end
    

    Названия метдов говорят за себя. Но давайте посмотрим, что же они возвращают.


    _methodDescription — все методы объекта, разбитые по классам от которых они унаследованы

    (lldb) po [UIApplication _methodDescription]
    <UIApplication: 0x8d83400>:
    in UIApplication:
    	Class Methods:
    		+ (BOOL) registerAsSystemApp; (0x2378c5)
    		+ (BOOL) rendersLocally; (0x2378d7)
    		+ (void) _startWindowServerIfNecessary; (0x230e26)
    		+ (void) _startStatusBarServerIfNecessary; (0x230f9a)
    		+ (int) statusBarStyleForString:(id)arg1; (0x23c19d)
    		+ (int) _backgroundStyleForString:(id)arg1; (0x23c39e)
    		+ (BOOL) _isBackgroundStyleTransparent:(int)arg1; (0x23c4e0)
    		+ (int) interfaceOrientationForString:(id)arg1; (0x23c4ef)
    		+ (BOOL) isRunningInStoreDemoMode; (0x22abcb)
    		+ (BOOL) shouldMakeUIForDefaultPNG; (0x22ac29)
    		+ (void) _noteInterfaceOrientationChangingTo:(int)arg1; (0x22be17)
    		+ (void) _installAfterCACommitHandler; (0x22d45f)
    		+ (BOOL) _isAfterCACommitHandlerInstalled; (0x22d512)
    		+ (BOOL) isRunningEventPump; (0x237848)
    		+ (id) stringForStatusBarStyle:(int)arg1; (0x23c169)
    		+ (id) stringForInterfaceOrientation:(int)arg1; (0x23c5d9)
    		+ (void) registerObjectForStateRestoration:(id)arg1 restorationIdentifier:(id)arg2; (0x8e6863)
    		+ (id) sharedApplication; (0x22a2b0)
    	Properties:
    		@property (nonatomic, getter=isProximitySensingEnabled) BOOL proximitySensingEnabled;
    		@property (nonatomic) <UIApplicationDelegate>* delegate;
    		@property (nonatomic, getter=isIdleTimerDisabled) BOOL idleTimerDisabled;
    		@property (readonly, nonatomic) UIWindow* keyWindow;
    		@property (readonly, nonatomic) NSArray* windows;
    		@property (nonatomic, getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
    		@property (nonatomic) int statusBarStyle;
    		@property (nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden;
    		@property (nonatomic) int statusBarOrientation;
    		@property (readonly, nonatomic) double statusBarOrientationAnimationDuration;
    		@property (readonly, nonatomic) CGRect statusBarFrame;
    		@property (nonatomic) int applicationIconBadgeNumber;
    		@property (nonatomic) BOOL applicationSupportsShakeToEdit;
    		@property (readonly, nonatomic) int applicationState;
    		@property (readonly, nonatomic) double backgroundTimeRemaining;
    		@property (readonly, nonatomic) int backgroundRefreshStatus;
    		@property (readonly, nonatomic, getter=isProtectedDataAvailable) BOOL protectedDataAvailable;
    		@property (readonly, nonatomic) int userInterfaceLayoutDirection;
    		@property (readonly, nonatomic) NSString* preferredContentSizeCategory;
    		@property (copy, nonatomic, setter=_setPreferredContentSizeCategoryName:) NSString* preferredContentSizeCategoryName;  (@synthesize preferredContentSizeCategoryName = _preferredContentSizeCategoryName;)
    		@property (nonatomic, getter=_lastTimestampWhenFirstTouchCameDown, setter=_setLastTimestampWhenFirstTouchCameDown:) double lastTimestampWhenFirstTouchCameDown;  (@synthesize lastTimestampWhenFirstTouchCameDown = _lastTimestampWhenFirstTouchCameDown;)
    		@property (nonatomic, getter=_lastTimestampWhenAllTouchesLifted, setter=_setLastTimestampWhenAllTouchesLifted:) double lastTimestampWhenAllTouchesLifted;  (@synthesize lastTimestampWhenAllTouchesLifted = _lastTimestampWhenAllTouchesLifted;)
    		@property (nonatomic, getter=_lastLocationWhereFirstTouchCameDown, setter=_setLastLocationWhereFirstTouchCameDown:) CGPoint lastLocationWhereFirstTouchCameDown;  (@synthesize lastLocationWhereFirstTouchCameDown = _lastLocationWhereFirstTouchCameDown;)
    		@property (nonatomic, getter=_lastLocationWhereAllTouchesLifted, setter=_setLastLocationWhereAllTouchesLifted:) CGPoint lastLocationWhereAllTouchesLifted;  (@synthesize lastLocationWhereAllTouchesLifted = _lastLocationWhereAllTouchesLifted;)
    	Instance Methods:
    		- (int) statusBarOrientation; (0x236147)
    		- (int) alertInterfaceOrientation; (0x247f45)
    		- (void) startedTest:(id)arg1; (0x38e6ce)
    		- (void) finishedTest:(id)arg1; (0x390a59)
    		- (id) _touchesEvent; (0x23d94f)
    		- (void) setApplicationSupportsShakeToEdit:(BOOL)arg1; (0x23bf31)
    		- (void) _deactivateForReason:(int)arg1 notify:(BOOL)arg2; (0x22b8f8)
    		- (void) _fetchInfoPlistFlags; (0x23c7f0)
    		- (void) _setTextLegibilityEnabled:(BOOL)arg1; (0x249882)
    		- (id) _mainStoryboardName; (0x22bf4d)
    		- (BOOL) _doRestorationIfNecessary; (0x249d5d)
    		- (void) applicationWillSuspend; (0x23752b)
    		- (void) _setHandlingURL:(BOOL)arg1 url:(id)arg2; (0x23a36a)
    		- (BOOL) _handleDelegateCallbacksWithOptions:(id)arg1 isSuspended:(BOOL)arg2 restoreState:(BOOL)arg3; (0x22c01a)
    		- (BOOL) _hasStoryboard; (0x22bfd8)
    		- (void) _applicationOpenURL:(id)arg1 payload:(id)arg2; (0x23a1b8)
    .....
    in UIResponder:
    	Class Methods:
    		+ (void) _startDeferredTrackingObjectsWithIdentifiers; (0x8e8348)
    		+ (void) _cleanupAllStateRestorationTables; (0x8e85dc)
    		+ (void) _updateStateRestorationIdentifierMap; (0x8e836c)
    		+ (id) objectWithRestorationIdentifierPath:(id)arg1; (0x8e802c)
    		+ (void) _setRestoredIdentifierPathForObject:(id)arg1 identifierPath:(id)arg2; (0x8e844d)
    		+ (void) _prepareForSecondPassStateRestoration; (0x8e85b6)
    		+ (void) _finishStateRestoration; (0x8e8644)
    		+ (void) clearTextInputContextIdentifier:(id)arg1; (0x398751)
    		+ (void) _stopDeferredTrackingObjectsWithIdentifiers; (0x8e835a)
    		+ (void) _cleanupStateRestorationObjectIdentifierTrackingTables; (0x8e856c)
    	Properties:
    		@property (readonly) UIView* inputView;
    		@property (readonly) UIView* inputAccessoryView;
    		@property (readonly) UITextInputMode* textInputMode;
    		@property (readonly) NSString* textInputContextIdentifier;
    		@property (readonly, nonatomic) NSArray* keyCommands;
    		@property (readonly, nonatomic) UIResponder* _editingDelegate;
    		@property (readonly, nonatomic) UIResponder* _responderForEditing;
    		@property (readonly, nonatomic, getter=_proxyTextInput) UIResponder<UITextInput>* __content;
    		@property (readonly, nonatomic) UIView<UITextInputPrivate>* _textSelectingContainer;
    		@property (readonly, nonatomic, getter=isEditable) BOOL editable;
    		@property (readonly, nonatomic, getter=isEditing) BOOL editing;
    		@property (readonly, nonatomic, getter=_caretRect) CGRect caretRect;
    		@property (copy, nonatomic) NSString* restorationIdentifier;
    		@property (readonly, nonatomic) NSUndoManager* undoManager;
    	Instance Methods:
    		- (id) _responderForEditing; (0x397e74)
    		- (BOOL) canPerformAction:(SEL)arg1 withSender:(id)arg2; (0x3983fc)
    		- (id) targetForAction:(SEL)arg1 withSender:(id)arg2; (0x39842c)
    		- (void) _physicalButtonsBegan:(id)arg1 withEvent:(id)arg2; (0x3996d6)
    		- (id) _deepestUnambiguousResponder; (0x39973f)
    		- (void) touchesCancelled:(id)arg1 withEvent:(id)arg2; (0x397b37)
    		- (id) _keyCommandForEvent:(id)arg1; (0x398bab)
    		- (void) _handleKeyUIEvent:(id)arg1; (0x399183)
    		- (void) _handleKeyEvent:(__GSEvent*)arg1; (0x399142)
    		- (void) _wheelChangedWithEvent:(id)arg1; (0x397cb7)
    		- (void) _physicalButtonsEnded:(id)arg1 withEvent:(id)arg2; (0x3996f9)
    		- (void) _physicalButtonsCancelled:(id)arg1 withEvent:(id)arg2; (0x39971c)
    		- (void) motionEnded:(int)arg1 withEvent:(id)arg2; (0x397bb3)
    		- (id) keyCommands; (0x398a39)
    		- (id) textInputMode; (0x398615)
    .....
    in NSObject:
    	Class Methods:
    		+ (void) _installAppearanceSwizzlesForSetter:(id)arg1; (0x78d82c)
    		+ (BOOL) __accessibilityGuidedAccessStateEnabled; (0x539dac)
    		+ (int) __accessibilityGuidedAccessRestrictionStateForIdentifier:(id)arg1; (0x539db3)
    		+ (void) __accessibilityRequestGuidedAccessSession:(BOOL)arg1 completion:(^block)arg2; (0x539dba)
    		+ (id) _alternateUISwitchableSelectorPairs; (0x3f929b)
    		+ (BOOL) isSelectorExcludedFromWebScript:(SEL)arg1; (0x42b5c40)
    		+ (BOOL) isKeyExcludedFromWebScript:(const char*)arg1; (0x42b5c50)
    		+ (id) _webkit_invokeOnMainThread; (0x42a4d90)
    

    __methodDescriptionForClass — список методов, реализованных в конкретном классе, без учета базовых классов

    (lldb) po [NSObject __methodDescriptionForClass:[NSString class]]
    
    in NSString:
    	Class Methods:
    		+ (void) _web_setWordRoundingEnabled:(BOOL)arg1; (0x42a4e50)
    		+ (BOOL) _web_wordRoundingEnabled; (0x42a4ea0)
    		+ (void) _web_setWordRoundingAllowed:(BOOL)arg1; (0x42a4ec0)
    		+ (BOOL) _web_wordRoundingAllowed; (0x42a4ee0)
    		+ (void) _web_setAscentRoundingEnabled:(BOOL)arg1; (0x42a4f00)
    		+ (BOOL) _web_ascentRoundingEnabled; (0x42a4f20)
    		+ (id) _webkit_localCacheDirectoryWithBundleIdentifier:(id)arg1; (0x42a0660)
    		+ (id) _web_stringWithData:(id)arg1 textEncodingName:(id)arg2; (0x42a0620)
    		+ (float) defaultLineHeightForFont:(id)arg1; (0x2e79478)
    		+ (float) defaultBaselineOffsetForFont:(id)arg1; (0x2e794ce)
    		+ (int) typesetterBehavior; (0x2e79389)
    		+ (float) hyphenationFactor; (0x2e79339)
    		+ (BOOL) usesFontLeading; (0x2e78f52)
    		+ (void) setUsesFontLeading:(BOOL)arg1; (0x2e78fa3)
    		+ (void) setTypesetterBehavior:(int)arg1; (0x2e793ed)
    		+ (BOOL) usesScreenFonts; (0x2e7901f)
    		+ (void) setUsesScreenFonts:(BOOL)arg1; (0x2e79089)
    		+ (void) setShowsInvisibleCharacters:(BOOL)arg1; (0x2e7911f)
    		+ (BOOL) showsInvisibleCharacters; (0x2e7919e)
    		+ (void) setShowsControlCharacters:(BOOL)arg1; (0x2e791f2)
    		+ (BOOL) showsControlCharacters; (0x2e79271)
    		+ (void) setHyphenationFactor:(float)arg1; (0x2e792c5)
    		+ (id) copyStringGUID; (0x7f54e23)
    		+ (id) copyStringGUIDForObject:(id)arg1; (0x7f54eee)
    		+ (id) stringGUID; (0x7f54e73)
    		+ (id) stringGUIDForObject:(id)arg1; (0x7f54ead)
    		+ (id) randomString; (0x7f54f14)
    		+ (id) generatedRoomNameForGroupChat; (0x7f54fa6)
    		+ (id) sbs_stringFromCGRect:(CGRect)arg1; (0x3d84171)
    		+ (id) stringWithUnichar:(unsigned long)arg1; (0x3fa6420)
    		+ (USet*) _characterSetWithPattern:(id)arg1; (0x3fa3bbc)
    		+ (id) _stringWithUnichar:(unsigned long)arg1; (0x3fa3a52)
    		+ (USet*) _ideographSet; (0x3fa40c1)
    		+ (USet*) _japaneseLetterSet; (0x3fa3fc1)
    		+ (USet*) _nonIdeographicCharacterSet; (0x3fa3cc9)
    		+ (USet*) _nonHiraganaOrKatakanaSet; (0x3fa3dc1)
    		+ (USet*) _nonHiraganaKatakanaOrBopomofoSet; (0x3fa3ec1)
    		+ (USet*) _bopomofoSet; (0x3fa41c1)
    		+ (USet*) _bopomofoToneSet; (0x3fa42c1)
    		+ (id) cutStringGUID; (0x7d5a0f3)
    		+ (unsigned int) defaultCStringEncoding; (0x11649ca)
    		+ (BOOL) supportsSecureCoding; (0x1258f74)
    		+ (id) localizedStringWithFormat:(id)arg1; (0x125684d)
    		+ (id) localizedNameOfStringEncoding:(unsigned int)arg1; (0x1166bbe)
    		+ (id) stringWithCharacters:(const unsigned short*)arg1 length:(unsigned int)arg2; (0x1188bbe)
    		+ (id) pathWithComponents:(id)arg1; (0x1165181)
    		+ (id) stringWithString:(id)arg1; (0x11a2e83)
    		+ (id) stringWithCString:(const char*)arg1; (0x1256740)
    		+ (id) stringWithCString:(const char*)arg1 length:(unsigned int)arg2; (0x12567ea)
    		+ (id) stringWithCString:(const char*)arg1 encoding:(unsigned int)arg2; (0x11a231c)
    		+ (id) stringWithBytes:(const void*)arg1 length:(unsigned int)arg2 encoding:(unsigned int)arg3; (0x11ef8a5)
    		+ (id) stringWithFormat:(id)arg1 locale:(id)arg2; (0x12568d5)
    		+ (id) stringWithContentsOfFile:(id)arg1; (0x125696b)
    		+ (id) stringWithContentsOfURL:(id)arg1; (0x12569c6)
    		+ (id) stringWithContentsOfURL:(id)arg1 encoding:(unsigned int)arg2 error:(id*)arg3; (0x116a661)
    		+ (id) stringWithContentsOfURL:(id)arg1 usedEncoding:(unsigned int*)arg2 error:(id*)arg3; (0x1256a2a)
    		+ (id) stringWithContentsOfFile:(id)arg1 usedEncoding:(unsigned int*)arg2 error:(id*)arg3; (0x1256a9c)
    		+ (const unsigned int*) availableStringEncodings; (0x1259e58)
    		+ (id) _web_stringRepresentationForBytes:(long long)arg1; (0x1273329)
    		+ (void) initialize; (0x117b78e)
    		+ (id) allocWithZone:(_NSZone*)arg1; (0x1180464)
    		+ (id) string; (0x11cb32f)
    		+ (id) stringWithUTF8String:(const char*)arg1; (0x118aad8)
    		+ (id) stringWithFormat:(id)arg1; (0x118eb75)
    		+ (id) stringWithContentsOfFile:(id)arg1 encoding:(unsigned int)arg2 error:(id*)arg3; (0x1205443)
    	Properties:
    		@property (readonly, nonatomic) NSString* mobileMeDomain;
    		@property (readonly, nonatomic) BOOL hasMobileMeSuffix;
    		@property (readonly, nonatomic) NSString* stripMobileMSuffixIfPresent;
    	Instance Methods:
    		- (id) _uikit_stringByTrimmingWhitespaceAndNewlines; (0x5c648c)
    		- (id) _uikit_stringWithWritingDirection:(int)arg1 asOverride:(BOOL)arg2; (0x5c6571)
    		- (id) queryKeysAndValues; (0x43e327)
    		- (id) unescapedQueryValue; (0x43e301)
    		- (CGSize) _optimizedSizeWithFont:(id)arg1; (0x4340e2)
    		- (id) _adjustedFontFromFont:(id)arg1 withinFrame:(CGRect)arg2 minimumSize:(float)arg3 textSize:(CGSize*)arg4; (0x4341cb)
    		- (id) stringByStandardizingWhitespace; (0x4071ce)
    .....
    

    _shortMethodDescription (если грубо, то вызывает [self __methodDescriptionForClass:[self class]])

    (lldb) po [UIApplication _shortMethodDescription]
    <UIApplication: 0x8d83400>:
    in UIApplication:
    	Class Methods:
    		+ (BOOL) registerAsSystemApp; (0x2378c5)
    		+ (BOOL) rendersLocally; (0x2378d7)
    		+ (void) _startWindowServerIfNecessary; (0x230e26)
    		+ (void) _startStatusBarServerIfNecessary; (0x230f9a)
    		+ (int) statusBarStyleForString:(id)arg1; (0x23c19d)
    		+ (int) _backgroundStyleForString:(id)arg1; (0x23c39e)
    		+ (BOOL) _isBackgroundStyleTransparent:(int)arg1; (0x23c4e0)
    		+ (int) interfaceOrientationForString:(id)arg1; (0x23c4ef)
    		+ (BOOL) isRunningInStoreDemoMode; (0x22abcb)
    		+ (BOOL) shouldMakeUIForDefaultPNG; (0x22ac29)
    		+ (void) _noteInterfaceOrientationChangingTo:(int)arg1; (0x22be17)
    		+ (void) _installAfterCACommitHandler; (0x22d45f)
    		+ (BOOL) _isAfterCACommitHandlerInstalled; (0x22d512)
    		+ (BOOL) isRunningEventPump; (0x237848)
    		+ (id) stringForStatusBarStyle:(int)arg1; (0x23c169)
    		+ (id) stringForInterfaceOrientation:(int)arg1; (0x23c5d9)
    		+ (void) registerObjectForStateRestoration:(id)arg1 restorationIdentifier:(id)arg2; (0x8e6863)
    		+ (id) sharedApplication; (0x22a2b0)
    	Properties:
    		@property (nonatomic, getter=isProximitySensingEnabled) BOOL proximitySensingEnabled;
    		@property (nonatomic) <UIApplicationDelegate>* delegate;
    		@property (nonatomic, getter=isIdleTimerDisabled) BOOL idleTimerDisabled;
    		@property (readonly, nonatomic) UIWindow* keyWindow;
    		@property (readonly, nonatomic) NSArray* windows;
    		@property (nonatomic, getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
    		@property (nonatomic) int statusBarStyle;
    		@property (nonatomic, getter=isStatusBarHidden) BOOL statusBarHidden;
    		@property (nonatomic) int statusBarOrientation;
    		@property (readonly, nonatomic) double statusBarOrientationAnimationDuration;
    		@property (readonly, nonatomic) CGRect statusBarFrame;
    		@property (nonatomic) int applicationIconBadgeNumber;
    		@property (nonatomic) BOOL applicationSupportsShakeToEdit;
    		@property (readonly, nonatomic) int applicationState;
    		@property (readonly, nonatomic) double backgroundTimeRemaining;
    		@property (readonly, nonatomic) int backgroundRefreshStatus;
    		@property (readonly, nonatomic, getter=isProtectedDataAvailable) BOOL protectedDataAvailable;
    		@property (readonly, nonatomic) int userInterfaceLayoutDirection;
    		@property (readonly, nonatomic) NSString* preferredContentSizeCategory;
    		@property (copy, nonatomic, setter=_setPreferredContentSizeCategoryName:) NSString* preferredContentSizeCategoryName;  (@synthesize preferredContentSizeCategoryName = _preferredContentSizeCategoryName;)
    		@property (nonatomic, getter=_lastTimestampWhenFirstTouchCameDown, setter=_setLastTimestampWhenFirstTouchCameDown:) double lastTimestampWhenFirstTouchCameDown;  (@synthesize lastTimestampWhenFirstTouchCameDown = _lastTimestampWhenFirstTouchCameDown;)
    		@property (nonatomic, getter=_lastTimestampWhenAllTouchesLifted, setter=_setLastTimestampWhenAllTouchesLifted:) double lastTimestampWhenAllTouchesLifted;  (@synthesize lastTimestampWhenAllTouchesLifted = _lastTimestampWhenAllTouchesLifted;)
    		@property (nonatomic, getter=_lastLocationWhereFirstTouchCameDown, setter=_setLastLocationWhereFirstTouchCameDown:) CGPoint lastLocationWhereFirstTouchCameDown;  (@synthesize lastLocationWhereFirstTouchCameDown = _lastLocationWhereFirstTouchCameDown;)
    		@property (nonatomic, getter=_lastLocationWhereAllTouchesLifted, setter=_setLastLocationWhereAllTouchesLifted:) CGPoint lastLocationWhereAllTouchesLifted;  (@synthesize lastLocationWhereAllTouchesLifted = _lastLocationWhereAllTouchesLifted;)
    	Instance Methods:
    		- (int) statusBarOrientation; (0x236147)
    		- (int) alertInterfaceOrientation; (0x247f45)
    		- (void) startedTest:(id)arg1; (0x38e6ce)
    		- (void) finishedTest:(id)arg1; (0x390a59)
    		- (id) _touchesEvent; (0x23d94f)
    		- (void) setApplicationSupportsShakeToEdit:(BOOL)arg1; (0x23bf31)
    		- (void) _deactivateForReason:(int)arg1 notify:(BOOL)arg2; (0x22b8f8)
    		- (void) _fetchInfoPlistFlags; (0x23c7f0)
    		- (void) _setTextLegibilityEnabled:(BOOL)arg1; (0x249882)
    		- (id) _mainStoryboardName; (0x22bf4d)
    		- (BOOL) _doRestorationIfNecessary; (0x249d5d)
    
    ....
    (UIResponder ...)
    

    _ivarDescription — все айвары объекта, разбитые по классам от которых они унаследованы

    (lldb) po [[UIApplication sharedApplication] _ivarDescription]
    <UIApplication: 0x8d83400>:
    in UIApplication:
    	_delegate (<UIApplicationDelegate>*): <PTCAppDelegate: 0x8c855e0>
    	_exclusiveTouchWindows (NSMutableSet*): <__NSSetM: 0x8d838e0>
    	_event (UIEvent*): <UIInternalEvent: 0x8d83b90>
    	_touchesEvent (UIEvent*): <UITouchesEvent: 0x8d83dd0>
    	_motionEvent (UIEvent*): <UIMotionEvent: 0x8d83330>
    	_remoteControlEvent (UIEvent*): <UIRemoteControlEvent: 0x8d849a0>
    	_remoteControlEventObservers (int): 0
    	_topLevelNibObjects (NSArray*): nil
    	_networkResourcesCurrentlyLoadingCount (int): 0
    	_hideNetworkActivityIndicatorTimer (NSTimer*): nil
    	_editAlertView (UIAlertView*): nil
    	_statusBar (UIStatusBar*): <UIStatusBar: 0x997a200>
    	_statusBarRequestedStyle (int): 0
    	_statusBarWindow (UIStatusBarWindow*): <UIStatusBarWindow: 0x8d85ea0>
    	_observerBlocks (NSMutableArray*): <__NSArrayM: 0x8d85060>
    	_postCommitActions (NSMutableArray*): <__NSArrayM: 0x8d85080>
    	_mainStoryboardName (NSString*): @"Main_iPhone"
    	_tintViewDurationStack (NSMutableArray*): nil
    	_statusBarTintColorLockingControllers (NSMutableArray*): nil
    	_statusBarTintColorLockingCount (int): 0
    	_preferredContentSizeCategory (NSString*): nil
    	_applicationFlags (unknown type)
    	_defaultTopNavBarTintColor (UIColor*): nil
    	_undoButtonIndex (int): 0
    	_redoButtonIndex (int): 0
    	_moveEvent (UIMoveEvent*): <UIMoveEvent: 0x8d84f20>
    	_physicalButtonsEvent (UIPhysicalButtonsEvent*): <UIPhysicalButtonsEvent: 0x8d84e10>
    	_wheelEvent (UIWheelEvent*): <UIWheelEvent: 0x8d85020>
    	_physicalButtonMap (NSMutableDictionary*): <__NSDictionaryM: 0x8d832f0>
    	_physicalKeyboardEvent (UIPhysicalKeyboardEvent*): <UIPhysicalKeyboardEvent: 0x8d84d70>
    	_backgroundHitTestWindow (UIWindow*): nil
    	_eventQueue (NSMutableArray*): <__NSArrayM: 0x8d850a0>
    	_childEventMap (__CFDictionary*): <c050d808>
    	_disableTouchCoalescingCount (int): 0
    	_currentTimestampWhenFirstTouchCameDown (double): 127388.411122337
    	_currentLocationWhereFirstTouchCameDown (CGPoint): {274, 549.5}
    	_preferredContentSizeCategoryName (NSString*): nil
    	_lastTimestampWhenFirstTouchCameDown (double): 127386.946548556
    	_lastTimestampWhenAllTouchesLifted (double): 127388.416909239
    	_lastLocationWhereFirstTouchCameDown (CGPoint): {93.5, 116.5}
    	_lastLocationWhereAllTouchesLifted (CGPoint): {274, 549.5}
    in UIResponder:
    in NSObject:
    	isa (Class): UIApplication
    

    __ivarDescriptionForClass — список айваров в конкретном классе, без учета базовых классов

    (lldb) po [[UIApplication sharedApplication] __ivarDescriptionForClass:[NSObject class]]
    
    in NSObject:
    	isa (Class): UIApplication
    
    Метки:
    • +14
    • 7,4k
    • 1
    Поделиться публикацией
    Похожие публикации
    Комментарии 1
    • 0
      Спасибо, я-то городил какой-то огород на питоне и lldb api… а оно вона как просто! :)
      P.S. Руку пожать не могу, то хоть в карму плюсану :) Реально выручил!

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.