Skip to content

Instantly share code, notes, and snippets.

@pixelomer
Created March 3, 2021 16:28
Show Gist options
  • Save pixelomer/4030283737335afdef2802f9e962f785 to your computer and use it in GitHub Desktop.
Save pixelomer/4030283737335afdef2802f9e962f785 to your computer and use it in GitHub Desktop.
Small Objective-C program for finding the longest built-in method name
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
static void LoadAllFrameworks(NSString *root) {
NSFileManager *defaultManager = [NSFileManager defaultManager];
NSDirectoryEnumerator *enumerator = [defaultManager
enumeratorAtURL:[NSURL fileURLWithPath:root]
includingPropertiesForKeys:nil
options:NSDirectoryEnumerationSkipsSubdirectoryDescendants
errorHandler:nil
];
NSURL *bundleURL;
NSArray *blacklist = @[
@"ActionKit.framework",
@"UIKit.framework"
];
while ((bundleURL = [enumerator nextObject])) {
NSString *lastComponent = [bundleURL lastPathComponent];
if ([blacklist containsObject:lastComponent] || [lastComponent hasSuffix:@"MacHelper.framework"]) {
continue;
}
NSLog(@"==> Loading \"%@\"...", [bundleURL path]);
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
@try {
[bundle load];
}
@catch (NSException *exception) {}
}
}
int main(int argc, char **argv) {
LoadAllFrameworks(@"/System/Library/Frameworks");
LoadAllFrameworks(@"/System/Library/PrivateFrameworks");
unsigned int classCount;
Class *allClasses = objc_copyClassList(&classCount);
Class classForLongestMethodName;
const char *longestMethodName = "";
for (unsigned int i=0; i<classCount; i++) {
unsigned int methodCount;
Method *allMethods = class_copyMethodList(allClasses[i], &methodCount);
for (unsigned int j=0; j<methodCount; j++) {
SEL methodSelector = method_getName(allMethods[j]);
const char *methodName = sel_getName(methodSelector);
if (strlen(methodName) > strlen(longestMethodName)) {
longestMethodName = methodName;
classForLongestMethodName = allClasses[i];
}
}
free(allMethods);
}
free(allClasses);
printf("Longest method: -[%s %s]\n", class_getName(classForLongestMethodName), longestMethodName);
NSBundle *bundle = [NSBundle bundleForClass:classForLongestMethodName];
printf("Source: %s\n", [[bundle description] UTF8String]);
return 0;
}
@UInt2048
Copy link

UInt2048 commented Mar 5, 2021

@pixelomer Yeesh, why is this a thing, and imagine it in a program! (We always knew Objective-C was wordy)

@khcrysalis
Copy link

On macOS 14.6, this program outputs the following:

Longest method: -[deoc_ultra predictionFromCurr_charge_start_secs_bin:drain_depth_mean_at_charge_start_secs_curr_static_bin:drain_depth_count_at_charge_start_secs_curr_static_bin:drain_depth_var_at_charge_start_secs_curr_static_bin:drain_depth_p_0_00_at_charge_start_secs_curr_static_bin:drain_depth_p_0_10_at_charge_start_secs_curr_static_bin:drain_depth_p_0_25_at_charge_start_secs_curr_static_bin:drain_depth_p_0_50_at_charge_start_secs_curr_static_bin:drain_depth_p_0_75_at_charge_start_secs_curr_static_bin:drain_depth_p_0_90_at_charge_start_secs_curr_static_bin:drain_depth_p_1_00_at_charge_start_secs_curr_static_bin:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:drain_depth_mean_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_count_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_var_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:drain_depth_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_mean_at_charge_start_secs_curr_static_bin:charge_duration_count_at_charge_start_secs_curr_static_bin:charge_duration_var_at_charge_start_secs_curr_static_bin:charge_duration_p_0_00_at_charge_start_secs_curr_static_bin:charge_duration_p_0_10_at_charge_start_secs_curr_static_bin:charge_duration_p_0_25_at_charge_start_secs_curr_static_bin:charge_duration_p_0_50_at_charge_start_secs_curr_static_bin:charge_duration_p_0_75_at_charge_start_secs_curr_static_bin:charge_duration_p_0_90_at_charge_start_secs_curr_static_bin:charge_duration_p_1_00_at_charge_start_secs_curr_static_bin:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:charge_duration_mean_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_count_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_var_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:charge_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_mean_at_charge_start_secs_curr_static_bin:drain_duration_count_at_charge_start_secs_curr_static_bin:drain_duration_var_at_charge_start_secs_curr_static_bin:drain_duration_p_0_00_at_charge_start_secs_curr_static_bin:drain_duration_p_0_10_at_charge_start_secs_curr_static_bin:drain_duration_p_0_25_at_charge_start_secs_curr_static_bin:drain_duration_p_0_50_at_charge_start_secs_curr_static_bin:drain_duration_p_0_75_at_charge_start_secs_curr_static_bin:drain_duration_p_0_90_at_charge_start_secs_curr_static_bin:drain_duration_p_1_00_at_charge_start_secs_curr_static_bin:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_1:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_2:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_4:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_8:drain_duration_mean_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_count_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_var_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_00_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_10_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_25_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_50_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_75_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_0_90_at_charge_start_secs_curr_dynamic_bin_12:drain_duration_p_1_00_at_charge_start_secs_curr_dynamic_bin_12:curr_charge_start_soc_bin:drain_depth_mean_at_charge_start_soc_curr_static_bin:drain_depth_count_at_charge_start_soc_curr_static_bin:drain_depth_var_at_charge_start_soc_curr_static_bin:drain_depth_p_0_00_at_charge_start_soc_curr_static_bin:drain_depth_p_0_10_at_charge_start_soc_curr_static_bin:drain_depth_p_0_25_at_charge_start_soc_curr_static_bin:drain_depth_p_0_50_at_charge_start_soc_curr_static_bin:drain_depth_p_0_75_at_charge_start_soc_curr_static_bin:drain_depth_p_0_90_at_charge_start_soc_curr_static_bin:drain_depth_p_1_00_at_charge_start_soc_curr_static_bin:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:drain_depth_mean_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_count_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_var_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:drain_depth_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_mean_at_charge_start_soc_curr_static_bin:charge_duration_count_at_charge_start_soc_curr_static_bin:charge_duration_var_at_charge_start_soc_curr_static_bin:charge_duration_p_0_00_at_charge_start_soc_curr_static_bin:charge_duration_p_0_10_at_charge_start_soc_curr_static_bin:charge_duration_p_0_25_at_charge_start_soc_curr_static_bin:charge_duration_p_0_50_at_charge_start_soc_curr_static_bin:charge_duration_p_0_75_at_charge_start_soc_curr_static_bin:charge_duration_p_0_90_at_charge_start_soc_curr_static_bin:charge_duration_p_1_00_at_charge_start_soc_curr_static_bin:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:charge_duration_mean_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_count_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_var_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:charge_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_mean_at_charge_start_soc_curr_static_bin:drain_duration_count_at_charge_start_soc_curr_static_bin:drain_duration_var_at_charge_start_soc_curr_static_bin:drain_duration_p_0_00_at_charge_start_soc_curr_static_bin:drain_duration_p_0_10_at_charge_start_soc_curr_static_bin:drain_duration_p_0_25_at_charge_start_soc_curr_static_bin:drain_duration_p_0_50_at_charge_start_soc_curr_static_bin:drain_duration_p_0_75_at_charge_start_soc_curr_static_bin:drain_duration_p_0_90_at_charge_start_soc_curr_static_bin:drain_duration_p_1_00_at_charge_start_soc_curr_static_bin:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_1:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_2:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_4:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_8:drain_duration_mean_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_count_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_var_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_00_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_10_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_25_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_50_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_75_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_0_90_at_charge_start_soc_curr_dynamic_bin_12:drain_duration_p_1_00_at_charge_start_soc_curr_dynamic_bin_12:prev_1_drain_depth:prev_1_charge_duration:prev_1_drain_duration:prev_2_drain_depth:prev_2_charge_duration:prev_2_drain_duration:prev_3_drain_depth:prev_3_charge_duration:prev_3_drain_duration:n_drain_above_50_30days:n_drain_below_50_30days:n_drain_above_60_30days:n_drain_below_60_30days:n_drain_above_70_30days:n_drain_below_70_30days:n_drain_above_80_30days:n_drain_below_80_30days:n_drain_above_90_30days:n_drain_below_90_30days:n_drain_above_100_30days:n_drain_below_100_30days:n_drain_above_50_15days:n_drain_below_50_15days:n_drain_above_60_15days:n_drain_below_60_15days:n_drain_above_70_15days:n_drain_below_70_15days:n_drain_above_80_15days:n_drain_below_80_15days:n_drain_above_90_15days:n_drain_below_90_15days:n_drain_above_100_15days:n_drain_below_100_15days:n_drain_above_50_7days:n_drain_below_50_7days:n_drain_above_60_7days:n_drain_below_60_7days:n_drain_above_70_7days:n_drain_below_70_7days:n_drain_above_80_7days:n_drain_below_80_7days:n_drain_above_90_7days:n_drain_below_90_7days:n_drain_above_100_7days:n_drain_below_100_7days:error:]
Source: NSBundle </System/Library/PrivateFrameworks/PowerUI.framework> (loaded)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment