You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// // FLEXClassExplorerViewController.m // Flipboard // // Created by Ryan Olson on 6/18/14. // Copyright (c) 2014 Flipboard. All rights reserved. //
#import "FLEXClassExplorerViewController.h" #import "FLEXMethodCallingViewController.h" #import "FLEXInstancesTableViewController.h"
typedef NS_ENUM(NSUInteger, FLEXClassExplorerRow) { FLEXClassExplorerRowNew, FLEXClassExplorerRowAlloc, FLEXClassExplorerRowLiveInstances };
@interface FLEXClassExplorerViewController ()
@property (nonatomic, readonly) Class theClass;
@end
@implementation FLEXClassExplorerViewController
- (Class)theClass { Class theClass = Nil; if (class_isMetaClass(object_getClass(self.object))) { theClass = self.object; } return theClass; }
#pragma mark - Superclass Overrides
- (NSArray<NSNumber *> *)possibleExplorerSections { // Move class methods to between our custom section and the properties section since // we are more interested in the class sections than in the instance level sections. NSMutableArray<NSNumber *> *mutableSections = [[super possibleExplorerSections] mutableCopy]; [mutableSections removeObject:@(FLEXObjectExplorerSectionClassMethods)]; [mutableSections insertObject:@(FLEXObjectExplorerSectionClassMethods) atIndex:[mutableSections indexOfObject:@(FLEXObjectExplorerSectionProperties)]]; return mutableSections; }
- (NSString *)customSectionTitle { return @"Shortcuts"; }
- (NSArray *)customSectionRowCookies { NSMutableArray *cookies = [NSMutableArray array]; if ([self.theClass respondsToSelector:@selector(new)]) { [cookies addObject:@(FLEXClassExplorerRowNew)]; } if ([self.theClass respondsToSelector:@selector(alloc)]) { [cookies addObject:@(FLEXClassExplorerRowAlloc)]; } [cookies addObject:@(FLEXClassExplorerRowLiveInstances)]; return cookies; }
- (NSString *)customSectionTitleForRowCookie:(id)rowCookie { NSString *title = nil; FLEXClassExplorerRow row = [rowCookie unsignedIntegerValue]; switch (row) { case FLEXClassExplorerRowNew: title = @"+ (id)new"; break; case FLEXClassExplorerRowAlloc: title = @"+ (id)alloc"; break; case FLEXClassExplorerRowLiveInstances: title = @"Live Instances"; break; } return title; }
- (NSString *)customSectionSubtitleForRowCookie:(id)rowCookie { return nil; }
- (UIViewController *)customSectionDrillInViewControllerForRowCookie:(id)rowCookie { UIViewController *drillInViewController = nil; FLEXClassExplorerRow row = [rowCookie unsignedIntegerValue]; switch (row) { case FLEXClassExplorerRowNew: drillInViewController = [[FLEXMethodCallingViewController alloc] initWithTarget:self.theClass method:class_getClassMethod(self.theClass, @selector(new))]; break; case FLEXClassExplorerRowAlloc: drillInViewController = [[FLEXMethodCallingViewController alloc] initWithTarget:self.theClass method:class_getClassMethod(self.theClass, @selector(alloc))]; break; case FLEXClassExplorerRowLiveInstances: drillInViewController = [FLEXInstancesTableViewController instancesTableViewControllerForClassName:NSStringFromClass(self.theClass)]; break; } return drillInViewController; }
- (BOOL)shouldShowDescription { // Redundant with our title. return NO; }
- (BOOL)canCallInstanceMethods { return NO; }
- (BOOL)canHaveInstanceState { return NO; }
@end
|