Created
March 3, 2021 16:28
-
-
Save pixelomer/4030283737335afdef2802f9e962f785 to your computer and use it in GitHub Desktop.
Small Objective-C program for finding the longest built-in method name
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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; | |
| } |
Author
@pixelomer Yeesh, why is this a thing, and imagine it in a program! (We always knew Objective-C was wordy)
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
On macOS 11.2.1 (20D74), this program outputs the following:
Longest method: -[FCPersonalizationScoringConfig initWithArticleLengthAggregateWeight:articleReadPenalty:audioMultiplierForFreeUsers:audioMultiplierForTrialUsers:audioMultiplierForPaidUsers:autofavoritedVoteCoefficient:baselineRatePrior:bundleFreeMultiplierForFreeUsers:bundleFreeMultiplierForTrialUsers:bundleFreeMultiplierForPaidUsers:bundlePaidMultiplierForFreeUsers:bundlePaidMultiplierForTrialUsers:bundlePaidMultiplierForPaidUsers:channelTopicDiversificationInitialPenalty:channelTopicDiversificationPenalty:channelTopicDiversificationPenaltyHalfLife:conversionCoefficientForFreeUsers:conversionCoefficientForTrialUsers:conversionCoefficientForPaidUsers:conversionCohort:ctrWithOneAutofavorited:ctrWithOneSubscribed:ctrWithSubscribedChannel:ctrWithThreeAutofavorited:ctrWithThreeSubscribed:ctrWithTwoAutofavorited:ctrWithTwoSubscribed:ctrWithZeroAutofavorited:ctrWithZeroSubscribed:decayFactor:democratizationFactor:diversificationInitialPenalty:diversificationPenalty:diversificationPenaltyHalfLife:featuredMultiplierForFreeUsers:featuredMultiplierForTrialUsers:featuredMultiplierForPaidUsers:evergreenMultiplierForFreeUsers:evergreenMultiplierForTrialUsers:evergreenMultiplierForPaidUsers:firstPassHalfLifeCoefficient:firstPassEvergreenHalfLifeCoefficient:firstPassDiversificationPenalty:firstPassArticleFilter:globalScoreCoefficientFree:globalScoreCoefficientPaid:globalScoreCoefficientHalfLife:globalScoreCoefficientInitialMultiplier:headlineSeenPenalty:halfLifeCoefficient:evergreenHalfLifeCoefficient:mutedVoteCoefficient:personalizationCoefficient:publisherAggregateWeight:sparseTagsPenalty:subscribedChannelScoreCoefficient:subscribedTopicsScoreCoefficient:userCohort:] Source: NSBundle </System/Library/PrivateFrameworks/NewsCore.framework> (loaded)