├── .gitignore ├── README.md ├── rename ├── func.sh └── projectfile.sh ├── resource ├── func_analysised │ ├── uikit_class_func.txt │ ├── uikit_class_instancetype_func.txt │ ├── uikit_member_func.txt │ └── uikit_member_instancetype_func.txt ├── func_orign │ ├── uikit_class_func.txt │ ├── uikit_class_instancetype_func.txt │ ├── uikit_member_func.txt │ └── uikit_member_instancetype_func.txt ├── ioswords.txt ├── random_class_name.txt ├── random_func_create.txt └── words.txt └── writecode ├── analysis ├── analys.py └── analysisstring.py ├── codemodel.py ├── config.py ├── filemanager.py ├── randomvalue.py ├── writecontrol.py └── xcodeprojhelp.rb /.gitignore: -------------------------------------------------------------------------------- 1 | writecode/__pycache__ 2 | writecode/analysis/__pycache__ 3 | .vscode 4 | resource/random_func_create.txt 5 | resource/random_class_name.txt 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Confuse 2 | 此脚本用于iOS工程(Objective-C)的混淆,包括垃圾代码的写入、项目重命名 3 | 4 | ``` 5 | Confuse 6 | ├── README.md // help 7 | ├── resource // 脚本所需的资源库 8 | │ ├── random_func_create.txt // 脚本一次运行创建的随机方法名(Git上忽略其修改) 9 | │ ├── random_class_name.txt // 脚本一次运行创建的随机类名(Git上忽略其修改) 10 | │ ├── ioswords.txt // iOS风格词库 11 | │ ├── words.txt // 普通词库 12 | │ ├── func_orign // 此文件夹下是iOS的原生API 13 | │ │ ├── uikit_member_instancetype_func.txt 14 | │ │ ├── uikit_member_func.txt 15 | │ │ ├── uikit_class_instancetype_func.txt 16 | │ │ └── uikit_class_func.txt 17 | │ └── func_analysised // 此文件夹下是原生API经过脚本(analysis)解析成字典的格式,为了便于使用 18 | │ ├── uikit_member_instancetype_func.txt 19 | │ ├── uikit_member_func.txt 20 | │ ├── uikit_class_instancetype_func.txt 21 | │ └── uikit_class_func.txt 22 | ├── writecode // 垃圾代码写入模块 23 | │ ├── config.py // 脚本配置(需要根据工程进行修改配置,见下文) 24 | │ ├── xcodeprojhelp.rb // .xcoproject操作脚本(用于给创建的垃圾代码文件添加、修改引用等) 25 | │ ├── codemodel.py // 垃圾代码样式模块(包括分支语句、函数调用语句、循环语句等) 26 | │ ├── filemanager.py // 文件操作模块(新建文件、对文件进行读写等) 27 | │ ├── writecontrol.py // 脚本入口 28 | │ ├── randomvalue.py // 产生随机值(函数名、类名等) 29 | │ └── analysis // 原生SDK解析脚本 30 | │ ├── analysisstring.py 31 | │ └── analys.py 32 | └── rename // 前缀重命名模块 33 | ├── func.sh // 脚本入口(函数重命名) 34 | └── projectfile.sh // 脚本入口(前缀重命名) 35 | ``` 36 | 37 | # 环境 38 | 安装好python3,脚本环境:MacOS 39 | 40 | # 使用 41 | ### 一、垃圾代码写入(writecontrol.py) 42 | #### (1)命令: 43 | python3 yourpath/Confuse/writecode/writecontrol.py 44 | #### (2)脚本说明: 45 | 假设工程的 .xcodeproj 路径为:/Users/animenzzz/XPlatformKit/XPlatformKit.xcodeproj 46 | 1.则HX目录为 /Users/animenzzz/XPlatformKit/HX 47 | 2.则白名单某个文件夹的路径为:/Users/animenzzz/XPlatformKit/XPlatformKit/白名单文件夹 48 | 3.输入的文件路径为 .xcodeproj 的上一级目录,如:/Users/animenzzz/XPlatformKit 49 | #### (3)根据你的工程修改: 50 | 1. config.py 中,白名单文件夹的设置(只在此白名单中的文件才进行垃圾代码的写入) 51 | 2. config.py 中,对 call_all_class 进行设置 52 | 1)若设置为空,则默认创建 工程名+AllCall 类作为控制开关 53 | 2)若设置为 XXXX ,则需要在指定工程文件 .xcodeproj 的同级目录创建 HX 文件夹, 54 | 且在此文件夹新建 XXXX.h,XXXX.m 两个文件 55 | 56 | ### 二、项目前缀重命名(projectfile.py) 57 | #### (1)命令: 58 | python3 yourpath/Confuse/rename/projectfile.sh 59 | #### (2)脚本说明: 60 | 1.此脚本会拷贝你的旧工程,并在这个备份下进行重命名,不会对原工程有影响 61 | 62 | #### (3)根据你的工程修改: 63 | 1. 在白名单中(IGNORE_FILE)添加你不需要更改的内容 64 | 65 | ### 三、函数前缀重命名(func.sh) 66 | #### (1)命令: 67 | sh yourpath/Confuse/rename/func.sh 68 | #### (2)脚本说明: 69 | 1. 在白名单中(IGNORE_FILE)添加你不需要更改的内容 70 | 2. 函数重命名分成三个部分。 71 | 1.)对工程内所有特定的前缀进行混淆 72 | 2.)对工程内所有.h声明的函数进行混淆,因为.m里面的方法会有系统的方法,所以不能进行混淆; 73 | .h也有可能有系统的方法,这个需要你在跑完脚本后,手动在宏里面进行删除 74 | 3.) 包含以上两点的函数混淆 75 | 76 | #### (3)根据你的工程修改: 77 | 1. 在白名单中(IGNORE_FILE)添加你不需要更改的内容 78 | 79 | 80 | -------------------------------------------------------------------------------- /rename/func.sh: -------------------------------------------------------------------------------- 1 | # Created by Animenzzz on 19/10/12. 2 | # Copyright (c) 2019年 Animenzzz. All rights reserved. 3 | # 此脚本,README有详细说明 4 | 5 | #!/bin/bash 6 | 7 | # 当前脚本工程的路径 8 | FUNC_SH_PATH=$(cd `dirname $0`; pwd) 9 | CONFUSE_PATH=${FUNC_SH_PATH%/*} 10 | 11 | WORDS=`cat $CONFUSE_PATH/resource/words.txt` 12 | IOS_WORDS=`cat $CONFUSE_PATH/resource/ioswords.txt` 13 | 14 | WORDS_LIST=(${WORDS}) 15 | WORDS_LIST_COUNT=${#WORDS_LIST[@]} 16 | IOS_WORDS_LIST=(${IOS_WORDS}) 17 | IOS_WORDS_LIST_COUNT=${#IOS_WORDS_LIST[@]} 18 | 19 | # 此白名单下的文件、文件夹不做处理 20 | IGNORE_FILE=("3rd" "core" "WebView") 21 | 22 | echo "当前功能模块:【函数重命名】" 23 | echo "1:特征函数混淆(如有特征前缀:qwe_) 2:所有.h的函数混淆 3: 1+2一起混淆" 24 | read choosen_func 25 | if [[ "${choosen_func}" = "1" || "${choosen_func}" = "3" ]];then 26 | echo "请输入特征前缀:" 27 | read func_pre 28 | fi 29 | 30 | echo "请输入工程路径" 31 | read projectPath 32 | 33 | TABLENAME=symbols 34 | SYMBOL_DB_FILE="/Users/animenzzz/Desktop/测试路径/symbols" 35 | FUNC_LIST="/Users/animenzzz/Desktop/测试路径/func.list" 36 | HEAD_FILE="${projectPath}/Obfuscation/Qwe_funcObfuscation.h" 37 | 38 | function isIgnoreFile(){ 39 | local fileName=${1} 40 | local result="NO" 41 | for ignore in ${IGNORE_FILE[@]}; 42 | do 43 | if [[ "$fileName" = "$ignore" ]];then #是忽略的文件/文件夹 44 | result="YES" 45 | break 46 | fi 47 | done 48 | echo $result 49 | } 50 | 51 | rm -f $SYMBOL_DB_FILE 52 | rm -f $FUNC_LIST 53 | rm -f $HEAD_FILE 54 | 55 | function getFuncList_pref(){ 56 | #取以.m或.h结尾的文件以+号或-号开头的行 |去掉所有+号或-号|用空格代替符号|n个空格跟着<号 替换成 <号|开头不能是IBAction|用空格split字串取第二部分|排序|去重复|删除空行|删掉以init开头的行>写进func.list 57 | grep -h -r -I "^[-+]" $1 --include '*.[mh]'\ 58 | |sed "s/[+-]//g"\ 59 | |sed "s/[();,: *\^\/\{]/ /g"\ 60 | |sed "s/[ ]*>$FUNC_LIST 66 | } 67 | 68 | function getFuncList_allHM(){ 69 | grep -h -r -I "^[-+]" $1 --include '*.[mh]'\ 70 | |sed "s/[+-]//g"\ 71 | |sed "s/[();,: *\^\/\{]/ /g"\ 72 | |sed "s/[ ]*>$FUNC_LIST 91 | } 92 | 93 | export LC_CTYPE=C 94 | 95 | function travelFile(){ 96 | 97 | ls "${1}" | while read f; 98 | do 99 | path=""${1}"/"${f}"" 100 | 101 | ignoreFile=$(isIgnoreFile "$(basename $path)") 102 | 103 | if [ -d "${path}" ];then 104 | if [ "${ignoreFile}" = "NO" ];then 105 | travelFile "${path}" 106 | fi 107 | else 108 | if [ "${path##*.}" = "h" ];then 109 | if [ "${ignoreFile}" = "NO" ];then 110 | getFuncList_allHM $path 111 | fi 112 | fi 113 | fi 114 | done 115 | } 116 | 117 | if [ "${choosen_func}" = "1" ];then #特征前缀 118 | getFuncList_pref $projectPath 119 | elif [ "${choosen_func}" = "2" ];then #所有函数 120 | travelFile ${projectPath} 121 | elif [ "${choosen_func}" = "3" ];then #所有函数 122 | if [ -n "$func_pre" ];then 123 | getFuncList_pref $projectPath 124 | fi 125 | travelFile ${projectPath} 126 | fi 127 | 128 | # ———————————————— 129 | # 版权声明:本文为CSDN博主「念茜」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 130 | # 原文链接:https://blog.csdn.net/yiyaaixuexi/article/details/29201699 131 | createTable() 132 | { 133 | echo "create table $TABLENAME(src text, des text);" | sqlite3 $SYMBOL_DB_FILE 134 | } 135 | 136 | insertValue() 137 | { 138 | echo "insert into $TABLENAME values('$1' ,'$2');" | sqlite3 $SYMBOL_DB_FILE 139 | } 140 | 141 | query() 142 | { 143 | echo "select * from $TABLENAME where src='$1';" | sqlite3 $SYMBOL_DB_FILE 144 | } 145 | 146 | ramdomString() 147 | { 148 | # openssl rand -base64 64 | tr -cd 'a-zA-Z' |head -c 16 149 | random_words=${WORDS_LIST[$((RANDOM%WORDS_LIST_COUNT))]} 150 | random_ios_words=${IOS_WORDS_LIST[$((RANDOM%IOS_WORDS_LIST_COUNT))]} 151 | echo ${random_words}${random_ios_words} 152 | 153 | } 154 | 155 | createTable 156 | 157 | touch $HEAD_FILE 158 | echo '#ifndef Demo_codeObfuscation_h 159 | #define Demo_codeObfuscation_h' >> $HEAD_FILE 160 | echo "//confuse string at `date`" >> $HEAD_FILE 161 | cat "$FUNC_LIST" |sort|uniq | while read -ra line; do 162 | if [[ ! -z "$line" ]]; then 163 | ramdom=`ramdomString` 164 | echo $line $ramdom 165 | insertValue $line $ramdom 166 | echo "#define $line $ramdom" >> $HEAD_FILE 167 | fi 168 | done 169 | echo "#endif" >> $HEAD_FILE 170 | 171 | sqlite3 $FUNC_LIST .dump 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /rename/projectfile.sh: -------------------------------------------------------------------------------- 1 | # Created by Animenzzz on 19/10/11. 2 | # Copyright (c) 2019年 Animenzzz. All rights reserved. 3 | # 此脚本,README有详细说明 4 | 5 | #!/bin/bash 6 | 7 | # 此白名单下的文件、文件夹不做处理 8 | IGNORE_FILE=("Build" \ 9 | "Index" \ 10 | ".gitignore" \ 11 | ".vscode" \ 12 | ".git" \ 13 | "README.md" \ 14 | ) 15 | 16 | function isIgnoreFile(){ 17 | local fileName=${1} 18 | local result="NO" 19 | for ignore in ${IGNORE_FILE[@]}; 20 | do 21 | if [[ "$fileName" = "$ignore" ]];then #是忽略的文件/文件夹 22 | result="YES" 23 | break 24 | fi 25 | done 26 | echo $result 27 | } 28 | 29 | echo "当前功能模块:【前缀重命名】" 30 | echo "请输入当前项目的前缀:" 31 | read prefixOldName 32 | echo "请输入新前缀:" 33 | read prefixNewName 34 | echo "请输入当前工程项目的路径(项目整个文件夹):" 35 | read oldFilePath 36 | echo "请输入输出的路径(新工程路径):" 37 | read renameFilePath 38 | 39 | # 旧工程的文件名 40 | oldProjectName=$(basename $oldFilePath) 41 | # 新工程的文件名 42 | # ${string/#substring/replacement} 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring 43 | newProjectName=${oldProjectName/#$prefixOldName/$prefixNewName} 44 | 45 | newProjectPath="$renameFilePath/$newProjectName" 46 | echo "正在新建目录:$newProjectPath" 47 | mkdir $newProjectPath 48 | 49 | echo "正在进行项目重命名..." 50 | function travelFile(){ 51 | 52 | ls "${1}" | while read f; 53 | do 54 | old_path=""${1}"/"${f}"" 55 | new_path=""${2}"/"${f}"" 56 | destPath=${new_path//${prefixOldName}/${prefixNewName}} 57 | 58 | ignoreFile=$(isIgnoreFile "$(basename $old_path)") 59 | 60 | if [ -d "${old_path}" ];then 61 | if [ "${ignoreFile}" = "NO" ];then 62 | mkdir "${destPath}" 63 | travelFile "${old_path}" "${destPath}" 64 | fi 65 | else 66 | if [ "${ignoreFile}" = "NO" ];then 67 | cp "${old_path}" "${destPath}" 68 | sed -i "s/${prefixOldName}/${prefixNewName}/g" "${destPath}" 69 | fi 70 | fi 71 | done 72 | } 73 | travelFile ${oldFilePath} ${newProjectPath} 74 | open $newProjectPath -------------------------------------------------------------------------------- /resource/func_analysised/uikit_class_func.txt: -------------------------------------------------------------------------------- 1 | {"params": ["NSString *", "NSLayoutFormatOptions", "nullable NSDictionary *", "NSDictionary *"], "returntype": "NSArray<__kindof NSLayoutConstraint *> *", "funcname": "constraintsWithVisualFormat", "descrip": ["options", "metrics", "views"]} 2 | {"params": ["NSArray *"], "returntype": "void", "funcname": "activateConstraints", "descrip": []} 3 | {"params": ["NSArray *"], "returntype": "void", "funcname": "deactivateConstraints", "descrip": []} 4 | {"params": ["NSTextAttachment *"], "returntype": "NSAttributedString *", "funcname": "attributedStringWithAttachment", "descrip": []} 5 | {"params": {}, "returntype": "UIAccelerometer *", "funcname": "sharedAccelerometer", "descrip": []} 6 | {"params": ["id", "NSString *"], "returntype": "void", "funcname": "registerObjectForStateRestoration", "descrip": ["restorationIdentifier"]} 7 | {"params": ["UIBlurEffectStyle"], "returntype": "UIBlurEffect *", "funcname": "effectWithStyle", "descrip": []} 8 | {"params": ["CGFloat", "CGFloat"], "returntype": "UIColor *", "funcname": "colorWithWhite", "descrip": ["alpha"]} 9 | {"params": ["CGFloat", "CGFloat", "CGFloat", "CGFloat"], "returntype": "UIColor *", "funcname": "colorWithHue", "descrip": ["saturation", "brightness", "alpha"]} 10 | {"params": ["CGFloat", "CGFloat", "CGFloat", "CGFloat"], "returntype": "UIColor *", "funcname": "colorWithRed", "descrip": ["green", "blue", "alpha"]} 11 | {"params": ["CGFloat", "CGFloat", "CGFloat", "CGFloat"], "returntype": "UIColor *", "funcname": "colorWithDisplayP3Red", "descrip": ["green", "blue", "alpha"]} 12 | {"params": ["UIImage *"], "returntype": "UIColor *", "funcname": "colorWithPatternImage", "descrip": []} 13 | {"params": ["CIColor *"], "returntype": "UIColor *", "funcname": "colorWithCIColor", "descrip": []} 14 | {"params": ["NSString *", "nullable NSBundle *", "nullable UITraitCollection *"], "returntype": "nullable UIColor *", "funcname": "colorNamed", "descrip": ["inBundle", "compatibleWithTraitCollection"]} 15 | {"params": {}, "returntype": "UIDevice *", "funcname": "currentDevice", "descrip": []} 16 | {"params": {}, "returntype": "id", "funcname": "help", "descrip": []} 17 | {"params": {}, "returntype": "id", "funcname": "status", "descrip": []} 18 | {"params": ["id"], "returntype": "id", "funcname": "checkFocusabilityForItem", "descrip": []} 19 | {"params": ["id"], "returntype": "id", "funcname": "simulateFocusUpdateRequestFromEnvironment", "descrip": []} 20 | {"params": ["id"], "returntype": "nullable UIFocusSystem *", "funcname": "focusSystemForEnvironment", "descrip": []} 21 | {"params": ["id", "id"], "returntype": "BOOL", "funcname": "environment", "descrip": ["containsEnvironment"]} 22 | {"params": ["NSURL *", "UIFocusSoundIdentifier"], "returntype": "void", "funcname": "registerURL", "descrip": ["forSoundIdentifier"]} 23 | {"params": ["UIFontTextStyle"], "returntype": "UIFont *", "funcname": "preferredFontForTextStyle", "descrip": []} 24 | {"params": ["UIFontTextStyle", "nullable UITraitCollection *"], "returntype": "UIFont *", "funcname": "preferredFontForTextStyle", "descrip": ["compatibleWithTraitCollection"]} 25 | {"params": ["NSString *", "CGFloat"], "returntype": "nullable UIFont *", "funcname": "fontWithName", "descrip": ["size"]} 26 | {"params": {}, "returntype": "NSArray *", "funcname": "familyNames", "descrip": []} 27 | {"params": ["NSString *"], "returntype": "NSArray *", "funcname": "fontNamesForFamilyName", "descrip": []} 28 | {"params": ["CGFloat"], "returntype": "UIFont *", "funcname": "systemFontOfSize", "descrip": []} 29 | {"params": ["CGFloat"], "returntype": "UIFont *", "funcname": "boldSystemFontOfSize", "descrip": []} 30 | {"params": ["CGFloat"], "returntype": "UIFont *", "funcname": "italicSystemFontOfSize", "descrip": []} 31 | {"params": ["CGFloat", "UIFontWeight"], "returntype": "UIFont *", "funcname": "systemFontOfSize", "descrip": ["weight"]} 32 | {"params": ["CGFloat", "UIFontWeight"], "returntype": "UIFont *", "funcname": "monospacedDigitSystemFontOfSize", "descrip": ["weight"]} 33 | {"params": ["UIFontDescriptor *", "CGFloat"], "returntype": "UIFont *", "funcname": "fontWithDescriptor", "descrip": ["size"]} 34 | {"params": ["NSDictionary *"], "returntype": "UIFontDescriptor *", "funcname": "fontDescriptorWithFontAttributes", "descrip": []} 35 | {"params": ["NSString *", "CGFloat"], "returntype": "UIFontDescriptor *", "funcname": "fontDescriptorWithName", "descrip": ["size"]} 36 | {"params": ["UIFontTextStyle"], "returntype": "UIFontDescriptor *", "funcname": "preferredFontDescriptorWithTextStyle", "descrip": []} 37 | {"params": ["UIFontTextStyle", "nullable UITraitCollection *"], "returntype": "UIFontDescriptor *", "funcname": "preferredFontDescriptorWithTextStyle", "descrip": ["compatibleWithTraitCollection"]} 38 | {"params": ["CGPoint"], "returntype": "NSValue *", "funcname": "valueWithCGPoint", "descrip": []} 39 | {"params": ["CGSize"], "returntype": "NSValue *", "funcname": "valueWithCGSize", "descrip": []} 40 | {"params": ["CGRect"], "returntype": "NSValue *", "funcname": "valueWithCGRect", "descrip": []} 41 | {"params": {}, "returntype": "Class", "funcname": "rendererContextClass", "descrip": []} 42 | {"params": ["UIGraphicsRendererFormat *"], "returntype": "nullable CGContextRef", "funcname": "contextWithFormat", "descrip": ["CF_RETURNS_RETAINED;"]} 43 | {"params": ["CGContextRef", "UIGraphicsRendererContext *"], "returntype": "void", "funcname": "prepareCGContext", "descrip": ["withRendererContext"]} 44 | {"params": ["NSString *", "nullable NSBundle *", "nullable UITraitCollection *"], "returntype": "nullable UIImage *", "funcname": "imageNamed", "descrip": ["inBundle", "compatibleWithTraitCollection"]} 45 | {"params": ["NSString *"], "returntype": "nullable UIImage *", "funcname": "imageWithContentsOfFile", "descrip": []} 46 | {"params": ["NSData *"], "returntype": "nullable UIImage *", "funcname": "imageWithData", "descrip": []} 47 | {"params": ["NSData *", "CGFloat"], "returntype": "nullable UIImage *", "funcname": "imageWithData", "descrip": ["scale"]} 48 | {"params": ["CGImageRef"], "returntype": "UIImage *", "funcname": "imageWithCGImage", "descrip": []} 49 | {"params": ["CGImageRef", "CGFloat", "UIImageOrientation"], "returntype": "UIImage *", "funcname": "imageWithCGImage", "descrip": ["scale", "orientation"]} 50 | {"params": ["CIImage *"], "returntype": "UIImage *", "funcname": "imageWithCIImage", "descrip": []} 51 | {"params": ["CIImage *", "CGFloat", "UIImageOrientation"], "returntype": "UIImage *", "funcname": "imageWithCIImage", "descrip": ["scale", "orientation"]} 52 | {"params": {}, "returntype": "UIColor *", "funcname": "groupTableViewBackgroundColor", "descrip": []} 53 | {"params": {}, "returntype": "UIColor *", "funcname": "viewFlipsideBackgroundColor", "descrip": []} 54 | {"params": {}, "returntype": "UIColor *", "funcname": "scrollViewTexturedBackgroundColor", "descrip": []} 55 | {"params": {}, "returntype": "UIColor *", "funcname": "underPageBackgroundColor", "descrip": []} 56 | {"params": {}, "returntype": "CGFloat", "funcname": "labelFontSize", "descrip": []} 57 | {"params": {}, "returntype": "CGFloat", "funcname": "buttonFontSize", "descrip": []} 58 | {"params": {}, "returntype": "CGFloat", "funcname": "smallSystemFontSize", "descrip": []} 59 | {"params": {}, "returntype": "CGFloat", "funcname": "systemFontSize", "descrip": []} 60 | {"params": {}, "returntype": "NSString *", "funcname": "persistentStoreName", "descrip": []} 61 | {"params": {}, "returntype": "UIMenuController *", "funcname": "sharedMenuController", "descrip": []} 62 | {"params": ["NSString *", "nullable NSBundle *"], "returntype": "UINib *", "funcname": "nibWithNibName", "descrip": ["bundle"]} 63 | {"params": ["NSData *", "nullable NSBundle *"], "returntype": "UINib *", "funcname": "nibWithData", "descrip": ["bundle"]} 64 | {"params": {}, "returntype": "UIPasteboard *", "funcname": "generalPasteboard", "descrip": []} 65 | {"params": ["UIPasteboardName", "BOOL"], "returntype": "nullable UIPasteboard *", "funcname": "pasteboardWithName", "descrip": ["create"]} 66 | {"params": {}, "returntype": "UIPasteboard *", "funcname": "pasteboardWithUniqueName", "descrip": []} 67 | {"params": ["UIPasteboardName"], "returntype": "void", "funcname": "removePasteboardWithName", "descrip": []} 68 | {"params": {}, "returntype": "CGFloat", "funcname": "arrowBase", "descrip": []} 69 | {"params": {}, "returntype": "CGFloat", "funcname": "arrowHeight", "descrip": []} 70 | {"params": {}, "returntype": "BOOL", "funcname": "wantsDefaultContentAppearance", "descrip": []} 71 | {"params": {}, "returntype": "UIPrintInfo *", "funcname": "printInfo", "descrip": []} 72 | {"params": ["NSURL *"], "returntype": "BOOL", "funcname": "canPrintURL", "descrip": []} 73 | {"params": ["NSData *"], "returntype": "BOOL", "funcname": "canPrintData", "descrip": []} 74 | {"params": {}, "returntype": "UIPrintInteractionController *", "funcname": "sharedPrintController", "descrip": []} 75 | {"params": ["NSString *"], "returntype": "BOOL", "funcname": "dictionaryHasDefinitionForTerm", "descrip": []} 76 | {"params": {}, "returntype": "UIRegion *", "funcname": "infiniteRegion", "descrip": []} 77 | {"params": ["NSString *"], "returntype": "void", "funcname": "clearTextInputContextIdentifier", "descrip": []} 78 | {"params": ["NSString *", "nullable NSBundle *"], "returntype": "UIStoryboard *", "funcname": "storyboardWithName", "descrip": ["bundle"]} 79 | {"params": ["NSString *"], "returntype": "void", "funcname": "learnWord", "descrip": []} 80 | {"params": ["NSString *"], "returntype": "BOOL", "funcname": "hasLearnedWord", "descrip": []} 81 | {"params": ["NSString *"], "returntype": "void", "funcname": "unlearnWord", "descrip": []} 82 | {"params": {}, "returntype": "NSArray *", "funcname": "availableLanguages", "descrip": []} 83 | {"params": ["NSArray *"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithTraitsFromCollections", "descrip": []} 84 | {"params": ["UIUserInterfaceIdiom"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithUserInterfaceIdiom", "descrip": []} 85 | {"params": ["UIUserInterfaceStyle"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithUserInterfaceStyle", "descrip": []} 86 | {"params": ["UITraitEnvironmentLayoutDirection"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithLayoutDirection", "descrip": []} 87 | {"params": ["CGFloat"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithDisplayScale", "descrip": []} 88 | {"params": ["UIUserInterfaceSizeClass"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithHorizontalSizeClass", "descrip": []} 89 | {"params": ["UIUserInterfaceSizeClass"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithVerticalSizeClass", "descrip": []} 90 | {"params": ["UIForceTouchCapability"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithForceTouchCapability", "descrip": []} 91 | {"params": ["UIContentSizeCategory"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithPreferredContentSizeCategory", "descrip": []} 92 | {"params": ["UIDisplayGamut"], "returntype": "UITraitCollection *", "funcname": "traitCollectionWithDisplayGamut", "descrip": []} 93 | {"params": ["UIBlurEffect *"], "returntype": "UIVibrancyEffect *", "funcname": "effectForBlurEffect", "descrip": []} 94 | {"params": ["NSString *"], "returntype": "BOOL", "funcname": "canEditVideoAtPath", "descrip": []} 95 | {"params": ["UISemanticContentAttribute"], "returntype": "UIUserInterfaceLayoutDirection", "funcname": "userInterfaceLayoutDirectionForSemanticContentAttribute", "descrip": []} 96 | {"params": ["UISemanticContentAttribute", "UIUserInterfaceLayoutDirection"], "returntype": "UIUserInterfaceLayoutDirection", "funcname": "userInterfaceLayoutDirectionForSemanticContentAttribute", "descrip": ["relativeToLayoutDirection"]} 97 | {"params": {}, "returntype": "BOOL", "funcname": "areAnimationsEnabled", "descrip": []} 98 | {"params": {}, "returntype": "BOOL", "funcname": "requiresConstraintBasedLayout", "descrip": []} 99 | {"params": {}, "returntype": "void", "funcname": "attemptRotationToDeviceOrientation", "descrip": []} 100 | -------------------------------------------------------------------------------- /resource/func_analysised/uikit_class_instancetype_func.txt: -------------------------------------------------------------------------------- 1 | {"params": ["NSInteger", "NSInteger"], "returntype": "instancetype", "funcname": "indexPathForRow", "descrip": ["inSection"]} 2 | {"params": ["NSInteger", "NSInteger"], "returntype": "instancetype", "funcname": "indexPathForItem", "descrip": ["inSection"]} 3 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 4 | {"params": ["nullable NSString *", "nullable NSString *", "UIAlertControllerStyle"], "returntype": "instancetype", "funcname": "alertControllerWithTitle", "descrip": ["message", "preferredStyle"]} 5 | {"params": {}, "returntype": "instancetype", "funcname": "appearance", "descrip": []} 6 | {"params": ["nullable Class "], "returntype": "instancetype", "funcname": "appearanceWhenContainedIn", "descrip": ["..", ""]} 7 | {"params": ["NSArray> *"], "returntype": "instancetype", "funcname": "appearanceWhenContainedInInstancesOfClasses", "descrip": []} 8 | {"params": ["UITraitCollection *"], "returntype": "instancetype", "funcname": "appearanceForTraitCollection", "descrip": []} 9 | {"params": ["UITraitCollection *", "nullable Class "], "returntype": "instancetype", "funcname": "appearanceForTraitCollection", "descrip": ["whenContainedIn", "..", ""]} 10 | {"params": ["UITraitCollection *", "NSArray> *"], "returntype": "instancetype", "funcname": "appearanceForTraitCollection", "descrip": ["whenContainedInInstancesOfClasses", ";"]} 11 | {"params": ["UIApplicationShortcutIconType"], "returntype": "instancetype", "funcname": "iconWithType", "descrip": []} 12 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "iconWithTemplateImageName", "descrip": []} 13 | {"params": ["id ", "id ", "CGPoint"], "returntype": "instancetype", "funcname": "fixedAttachmentWithItem", "descrip": ["attachedToItem", "attachmentAnchor"]} 14 | {"params": ["id ", "id ", "CGPoint"], "returntype": "instancetype", "funcname": "pinAttachmentWithItem", "descrip": ["attachedToItem", "attachmentAnchor"]} 15 | {"params": {}, "returntype": "instancetype", "funcname": "bezierPath", "descrip": []} 16 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "bezierPathWithRect", "descrip": []} 17 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "bezierPathWithOvalInRect", "descrip": []} 18 | {"params": ["CGRect", "UIRectCorner", "CGSize"], "returntype": "instancetype", "funcname": "bezierPathWithRoundedRect", "descrip": ["byRoundingCorners", "cornerRadii"]} 19 | {"params": ["CGPoint", "CGFloat", "CGFloat", "CGFloat", "BOOL"], "returntype": "instancetype", "funcname": "bezierPathWithArcCenter", "descrip": ["radius", "startAngle", "endAngle", "clockwise"]} 20 | {"params": ["CGPathRef"], "returntype": "instancetype", "funcname": "bezierPathWithCGPath", "descrip": []} 21 | {"params": ["UIButtonType"], "returntype": "instancetype", "funcname": "buttonWithType", "descrip": []} 22 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 23 | {"params": ["NSIndexPath *"], "returntype": "instancetype", "funcname": "layoutAttributesForCellWithIndexPath", "descrip": []} 24 | {"params": ["NSString *", "NSIndexPath *"], "returntype": "instancetype", "funcname": "layoutAttributesForSupplementaryViewOfKind", "descrip": ["withIndexPath"]} 25 | {"params": ["NSString *", "NSIndexPath *"], "returntype": "instancetype", "funcname": "layoutAttributesForDecorationViewOfKind", "descrip": ["withIndexPath"]} 26 | {"params": ["UIContextualActionStyle", "nullable NSString *", "UIContextualActionHandler"], "returntype": "instancetype", "funcname": "contextualActionWithStyle", "descrip": ["title", "handler"]} 27 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 28 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 29 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 30 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 31 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 32 | {"params": {}, "returntype": "instancetype", "funcname": "dragField", "descrip": []} 33 | {"params": {}, "returntype": "instancetype", "funcname": "vortexField", "descrip": []} 34 | {"params": ["CGPoint"], "returntype": "instancetype", "funcname": "radialGravityFieldWithPosition", "descrip": []} 35 | {"params": ["CGFloat", "CGFloat"], "returntype": "instancetype", "funcname": "noiseFieldWithSmoothness", "descrip": ["animationSpeed"]} 36 | {"params": ["CGFloat", "CGFloat"], "returntype": "instancetype", "funcname": "turbulenceFieldWithSmoothness", "descrip": ["animationSpeed"]} 37 | {"params": {}, "returntype": "instancetype", "funcname": "springField", "descrip": []} 38 | {"params": {}, "returntype": "instancetype", "funcname": "electricField", "descrip": []} 39 | {"params": {}, "returntype": "instancetype", "funcname": "magneticField", "descrip": []} 40 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 41 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 42 | {"params": ["UIFontTextStyle"], "returntype": "instancetype", "funcname": "metricsForTextStyle", "descrip": []} 43 | {"params": ["UITraitCollection *"], "returntype": "instancetype", "funcname": "formatForTraitCollection", "descrip": []} 44 | {"params": {}, "returntype": "instancetype", "funcname": "defaultFormat", "descrip": []} 45 | {"params": {}, "returntype": "instancetype", "funcname": "preferredFormat", "descrip": []} 46 | {"params": {}, "returntype": "instancetype", "funcname": "currentCollation", "descrip": []} 47 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 48 | {"params": ["NSArray *"], "returntype": "instancetype", "funcname": "configurationWithActions", "descrip": []} 49 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 50 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 51 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 52 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 53 | {"params": ["NSURL *"], "returntype": "instancetype", "funcname": "previewForURL", "descrip": []} 54 | {"params": ["NSURL *", "NSString * _Nullable"], "returntype": "instancetype", "funcname": "previewForURL", "descrip": ["title"]} 55 | {"params": ["NSURL *", "UIDragPreviewTarget*"], "returntype": "instancetype", "funcname": "previewForURL", "descrip": ["target"]} 56 | {"params": ["NSURL *", "NSString * _Nullable", "UIDragPreviewTarget*"], "returntype": "instancetype", "funcname": "previewForURL", "descrip": ["title", "target"]} 57 | {"params": {}, "returntype": "instancetype", "funcname": "new", "descrip": []} 58 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "passwordRulesWithDescriptor", "descrip": []} 59 | {"params": ["NSString *", "UIPreviewActionStyle", "NSArray *"], "returntype": "instancetype", "funcname": "actionGroupWithTitle", "descrip": ["style", "actions"]} 60 | -------------------------------------------------------------------------------- /resource/func_analysised/uikit_member_instancetype_func.txt: -------------------------------------------------------------------------------- 1 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 2 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 3 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 4 | {"params": ["nullable NSData *", "nullable NSString *"], "returntype": "instancetype", "funcname": "initWithData", "descrip": ["ofType"]} 5 | {"params": ["CGSize"], "returntype": "instancetype", "funcname": "initWithSize", "descrip": []} 6 | {"params": ["NSCoder *"], "returntype": "instancetype", "funcname": "initWithCoder", "descrip": []} 7 | {"params": ["NSString *", "UIAccessibilityCustomRotorSearch"], "returntype": "instancetype", "funcname": "initWithName", "descrip": ["itemSearchBlock"]} 8 | {"params": ["NSAttributedString *", "UIAccessibilityCustomRotorSearch"], "returntype": "instancetype", "funcname": "initWithAttributedName", "descrip": ["itemSearchBlock"]} 9 | {"params": ["UIAccessibilityCustomSystemRotorType", "UIAccessibilityCustomRotorSearch"], "returntype": "instancetype", "funcname": "initWithSystemType", "descrip": ["itemSearchBlock"]} 10 | {"params": ["id", "nullable UITextRange *"], "returntype": "instancetype", "funcname": "initWithTargetElement", "descrip": ["targetRange"]} 11 | {"params": ["id"], "returntype": "instancetype", "funcname": "initWithAccessibilityContainer", "descrip": []} 12 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 13 | {"params": ["NSString *", "UIView *"], "returntype": "instancetype", "funcname": "initWithName", "descrip": ["view"]} 14 | {"params": ["NSString *", "CGPoint", "UIView *"], "returntype": "instancetype", "funcname": "initWithName", "descrip": ["point", "inView"]} 15 | {"params": ["NSAttributedString *", "CGPoint", "UIView *"], "returntype": "instancetype", "funcname": "initWithAttributedName", "descrip": ["point", "inView"]} 16 | {"params": ["nullable NSString *", "nullable id", "nullable NSString *", "nullable NSString *", "nullable NSString *"], "returntype": "instancetype", "funcname": "initWithTitle", "descrip": ["delegate", "cancelButtonTitle", "destructiveButtonTitle", "otherButtonTitles", "..", ""]} 17 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": []} 18 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 19 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 20 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 21 | {"params": ["NSArray *", "nullable NSArray<__kindof UIActivity *> *"], "returntype": "instancetype", "funcname": "initWithActivityItems", "descrip": ["applicationActivities"]} 22 | {"params": ["nullable NSString *", "nullable NSString *", "nullable id /**/", "nullable NSString *", "nullable NSString *"], "returntype": "instancetype", "funcname": "initWithTitle", "descrip": ["message", "delegate", "cancelButtonTitle", "otherButtonTitles", "..", ""]} 23 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 24 | {"params": ["NSString *", "NSString *", "nullable NSString *", "nullable UIApplicationShortcutIcon *", "nullable NSDictionary> *"], "returntype": "instancetype", "funcname": "initWithType", "descrip": ["localizedTitle", "localizedSubtitle", "icon", "userInfo"]} 25 | {"params": ["NSString *", "NSString *"], "returntype": "instancetype", "funcname": "initWithType", "descrip": ["localizedTitle"]} 26 | {"params": ["id ", "CGPoint"], "returntype": "instancetype", "funcname": "initWithItem", "descrip": ["attachedToAnchor"]} 27 | {"params": ["id ", "id "], "returntype": "instancetype", "funcname": "initWithItem", "descrip": ["attachedToItem"]} 28 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 29 | {"params": ["UIView *"], "returntype": "instancetype", "funcname": "initWithCustomView", "descrip": []} 30 | {"params": ["NSArray *", "nullable UIBarButtonItem *"], "returntype": "instancetype", "funcname": "initWithBarButtonItems", "descrip": ["representativeItem"]} 31 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 32 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 33 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 34 | {"params": ["CKShare *", "CKContainer *"], "returntype": "instancetype", "funcname": "initWithShare", "descrip": ["container"]} 35 | {"params": ["CGRect", "UICollectionViewLayout *"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": ["collectionViewLayout"]} 36 | {"params": ["UIDropOperation", "UICollectionViewDropIntent"], "returntype": "instancetype", "funcname": "initWithDropOperation", "descrip": ["intent"]} 37 | {"params": ["NSIndexPath*", "NSString *"], "returntype": "instancetype", "funcname": "initWithInsertionIndexPath", "descrip": ["reuseIdentifier"]} 38 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 39 | {"params": ["UICollectionViewLayout *"], "returntype": "instancetype", "funcname": "initWithCollectionViewLayout", "descrip": []} 40 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 41 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 42 | {"params": ["UICollectionViewLayout *", "UICollectionViewLayout *"], "returntype": "instancetype", "funcname": "initWithCurrentLayout", "descrip": ["nextLayout"]} 43 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 44 | {"params": ["NSArray> *"], "returntype": "instancetype", "funcname": "initWithItems", "descrip": []} 45 | {"params": ["UIColor *"], "returntype": "instancetype", "funcname": "initWithColor", "descrip": []} 46 | {"params": ["NSURL *"], "returntype": "instancetype", "funcname": "initWithFileURL", "descrip": []} 47 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 48 | {"params": ["nullable NSArray *"], "returntype": "instancetype", "funcname": "initForOpeningFilesWithContentTypes", "descrip": []} 49 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 50 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 51 | {"params": ["NSArray *", "UIDocumentPickerMode"], "returntype": "instancetype", "funcname": "initWithDocumentTypes", "descrip": ["inMode"]} 52 | {"params": ["NSURL *", "UIDocumentPickerMode"], "returntype": "instancetype", "funcname": "initWithURL", "descrip": ["inMode"]} 53 | {"params": ["NSArray *", "UIDocumentPickerMode"], "returntype": "instancetype", "funcname": "initWithDocumentTypes", "descrip": ["inMode"]} 54 | {"params": ["NSArray *", "UIDocumentPickerMode"], "returntype": "instancetype", "funcname": "initWithURLs", "descrip": ["inMode"]} 55 | {"params": ["id"], "returntype": "instancetype", "funcname": "initWithDelegate", "descrip": []} 56 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 57 | {"params": ["NSItemProvider *"], "returntype": "instancetype", "funcname": "initWithItemProvider", "descrip": []} 58 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 59 | {"params": ["UIView *", "UIDragPreviewParameters *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": ["parameters"]} 60 | {"params": ["UIView *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": []} 61 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 62 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 63 | {"params": ["id"], "returntype": "instancetype", "funcname": "initWithDelegate", "descrip": []} 64 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 65 | {"params": ["UIDropOperation"], "returntype": "instancetype", "funcname": "initWithDropOperation", "descrip": []} 66 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 67 | {"params": ["UIView *"], "returntype": "instancetype", "funcname": "initWithReferenceView", "descrip": []} 68 | {"params": ["UICollectionViewLayout *"], "returntype": "instancetype", "funcname": "initWithCollectionViewLayout", "descrip": []} 69 | {"params": ["NSArray> *"], "returntype": "instancetype", "funcname": "initWithItems", "descrip": []} 70 | {"params": ["NSArray> *"], "returntype": "instancetype", "funcname": "initWithItems", "descrip": []} 71 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 72 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 73 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 74 | {"params": ["NSDictionary *"], "returntype": "instancetype", "funcname": "initWithFontAttributes", "descrip": []} 75 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 76 | {"params": ["UIFontTextStyle"], "returntype": "instancetype", "funcname": "initForTextStyle", "descrip": []} 77 | {"params": ["CGSize"], "returntype": "instancetype", "funcname": "initWithSize", "descrip": []} 78 | {"params": ["CGSize", "UIGraphicsImageRendererFormat *"], "returntype": "instancetype", "funcname": "initWithSize", "descrip": ["format"]} 79 | {"params": ["CGRect", "UIGraphicsImageRendererFormat *"], "returntype": "instancetype", "funcname": "initWithBounds", "descrip": ["format"]} 80 | {"params": ["CGRect", "UIGraphicsPDFRendererFormat *"], "returntype": "instancetype", "funcname": "initWithBounds", "descrip": ["format"]} 81 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithBounds", "descrip": []} 82 | {"params": ["CGRect", "UIGraphicsRendererFormat *"], "returntype": "instancetype", "funcname": "initWithBounds", "descrip": ["format"]} 83 | {"params": ["NSArray> *"], "returntype": "instancetype", "funcname": "initWithItems", "descrip": []} 84 | {"params": ["CGImageRef"], "returntype": "instancetype", "funcname": "initWithCGImage", "descrip": []} 85 | {"params": ["CGImageRef", "CGFloat", "UIImageOrientation"], "returntype": "instancetype", "funcname": "initWithCGImage", "descrip": ["scale", "orientation"]} 86 | {"params": ["CIImage *"], "returntype": "instancetype", "funcname": "initWithCIImage", "descrip": []} 87 | {"params": ["CIImage *", "CGFloat", "UIImageOrientation"], "returntype": "instancetype", "funcname": "initWithCIImage", "descrip": ["scale", "orientation"]} 88 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 89 | {"params": ["nullable UIImage *"], "returntype": "instancetype", "funcname": "initWithImage", "descrip": []} 90 | {"params": ["nullable UIImage *", "nullable UIImage *"], "returntype": "instancetype", "funcname": "initWithImage", "descrip": ["highlightedImage"]} 91 | {"params": ["UIImpactFeedbackStyle"], "returntype": "instancetype", "funcname": "initWithStyle", "descrip": []} 92 | {"params": ["CGRect", "UIInputViewStyle"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": ["inputViewStyle"]} 93 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 94 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 95 | {"params": ["NSString *", "UIInterpolatingMotionEffectType"], "returntype": "instancetype", "funcname": "initWithKeyPath", "descrip": ["type"]} 96 | {"params": ["nullable Class", "nullable Class"], "returntype": "instancetype", "funcname": "initWithNavigationBarClass", "descrip": ["toolbarClass"]} 97 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "initWithTitle", "descrip": []} 98 | {"params": ["UIPageViewControllerTransitionStyle", "UIPageViewControllerNavigationOrientation", "nullable NSDictionary *"], "returntype": "instancetype", "funcname": "initWithTransitionStyle", "descrip": ["navigationOrientation", "options"]} 99 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 100 | {"params": ["NSArray *"], "returntype": "instancetype", "funcname": "initWithAcceptableTypeIdentifiers", "descrip": []} 101 | {"params": ["Class"], "returntype": "instancetype", "funcname": "initWithTypeIdentifiersForAcceptingClass", "descrip": []} 102 | {"params": ["UIViewController *"], "returntype": "instancetype", "funcname": "initWithContentViewController", "descrip": []} 103 | {"params": ["UIViewController *", "nullable UIViewController *"], "returntype": "instancetype", "funcname": "initWithPresentedViewController", "descrip": ["presentingViewController"]} 104 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 105 | {"params": ["UIView *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": []} 106 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 107 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "initWithText", "descrip": []} 108 | {"params": ["NSAttributedString *"], "returntype": "instancetype", "funcname": "initWithAttributedText", "descrip": []} 109 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "initWithMarkupText", "descrip": []} 110 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": []} 111 | {"params": ["NSArray> *", "UIPushBehaviorMode"], "returntype": "instancetype", "funcname": "initWithItems", "descrip": ["mode"]} 112 | {"params": ["NSString *"], "returntype": "instancetype", "funcname": "initWithTerm", "descrip": []} 113 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 114 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 115 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 116 | {"params": ["CGFloat"], "returntype": "instancetype", "funcname": "initWithRadius", "descrip": []} 117 | {"params": ["CGSize"], "returntype": "instancetype", "funcname": "initWithSize", "descrip": []} 118 | {"params": {}, "returntype": "instancetype", "funcname": "inverseRegion", "descrip": []} 119 | {"params": ["UIRegion *"], "returntype": "instancetype", "funcname": "regionByUnionWithRegion", "descrip": []} 120 | {"params": ["UIRegion *"], "returntype": "instancetype", "funcname": "regionByDifferenceFromRegion", "descrip": []} 121 | {"params": ["UIRegion *"], "returntype": "instancetype", "funcname": "regionByIntersectionWithRegion", "descrip": []} 122 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 123 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 124 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": []} 125 | {"params": ["UISearchController *"], "returntype": "instancetype", "funcname": "initWithSearchController", "descrip": []} 126 | {"params": ["nullable UIViewController *"], "returntype": "instancetype", "funcname": "initWithSearchResultsController", "descrip": []} 127 | {"params": ["UISearchBar *", "UIViewController *"], "returntype": "instancetype", "funcname": "initWithSearchBar", "descrip": ["contentsController"]} 128 | {"params": ["id ", "CGPoint"], "returntype": "instancetype", "funcname": "initWithItem", "descrip": ["snapToPoint"]} 129 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 130 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": []} 131 | {"params": ["NSCoder *"], "returntype": "instancetype", "funcname": "initWithCoder", "descrip": []} 132 | {"params": ["nullable NSString *", "UIViewController *", "UIViewController *"], "returntype": "instancetype", "funcname": "initWithIdentifier", "descrip": ["source", "destination"]} 133 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 134 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 135 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 136 | {"params": ["nullable NSString *", "nullable UIImage *", "NSInteger"], "returntype": "instancetype", "funcname": "initWithTitle", "descrip": ["image", "tag"]} 137 | {"params": ["nullable NSString *", "nullable UIImage *", "nullable UIImage *"], "returntype": "instancetype", "funcname": "initWithTitle", "descrip": ["image", "selectedImage"]} 138 | {"params": ["UITabBarSystemItem", "NSInteger"], "returntype": "instancetype", "funcname": "initWithTabBarSystemItem", "descrip": ["tag"]} 139 | {"params": ["UIDropOperation", "UITableViewDropIntent"], "returntype": "instancetype", "funcname": "initWithDropOperation", "descrip": ["intent"]} 140 | {"params": ["NSIndexPath *", "NSString *", "CGFloat"], "returntype": "instancetype", "funcname": "initWithInsertionIndexPath", "descrip": ["reuseIdentifier", "rowHeight"]} 141 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 142 | {"params": ["UITableViewCellStyle", "nullable NSString *"], "returntype": "instancetype", "funcname": "initWithStyle", "descrip": ["reuseIdentifier"]} 143 | {"params": ["UITableViewStyle"], "returntype": "instancetype", "funcname": "initWithStyle", "descrip": []} 144 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 145 | {"params": ["nullable NSString *"], "returntype": "instancetype", "funcname": "initWithReuseIdentifier", "descrip": []} 146 | {"params": ["UIView *", "CGPoint"], "returntype": "instancetype", "funcname": "initWithContainer", "descrip": ["center"]} 147 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 148 | {"params": ["UIView *", "UIDragPreviewParameters *", "UIDragPreviewTarget *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": ["parameters", "target"]} 149 | {"params": ["UIView *", "UIDragPreviewParameters *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": ["parameters"]} 150 | {"params": ["UIView *"], "returntype": "instancetype", "funcname": "initWithView", "descrip": []} 151 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 152 | {"params": ["NSLayoutManager*", "NSRange"], "returntype": "instancetype", "funcname": "initWithLayoutManager", "descrip": ["range"]} 153 | {"params": ["NSLayoutManager*", "NSRange", "BOOL"], "returntype": "instancetype", "funcname": "initWithLayoutManager", "descrip": ["range", "unifyRects"]} 154 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 155 | {"params": ["UIResponder *"], "returntype": "instancetype", "funcname": "initWithTextInput", "descrip": []} 156 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 157 | {"params": ["CGRect", "nullable NSTextContainer *"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": ["textContainer"]} 158 | {"params": ["UIViewAnimationCurve"], "returntype": "instancetype", "funcname": "initWithAnimationCurve", "descrip": []} 159 | {"params": ["CGPoint", "CGPoint"], "returntype": "instancetype", "funcname": "initWithControlPoint1", "descrip": ["controlPoint2"]} 160 | {"params": ["CGFloat"], "returntype": "instancetype", "funcname": "initWithDampingRatio", "descrip": []} 161 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 162 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 163 | {"params": {}, "returntype": "instancetype", "funcname": "init", "descrip": []} 164 | {"params": ["CGRect"], "returntype": "instancetype", "funcname": "initWithFrame", "descrip": []} 165 | {"params": ["nullable NSString *", "nullable NSBundle *"], "returntype": "instancetype", "funcname": "initWithNibName", "descrip": ["bundle"]} 166 | {"params": ["nullable UIVisualEffect *"], "returntype": "instancetype", "funcname": "initWithEffect", "descrip": []} 167 | -------------------------------------------------------------------------------- /resource/func_orign/uikit_class_func.txt: -------------------------------------------------------------------------------- 1 | + (NSArray<__kindof NSLayoutConstraint *> *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(nullable NSDictionary *)metrics views:(NSDictionary *)views; 2 | + (void)activateConstraints:(NSArray *)constraints; 3 | + (void)deactivateConstraints:(NSArray *)constraints; 4 | + (NSAttributedString *)attributedStringWithAttachment:(NSTextAttachment *)attachment; 5 | + (UIAccelerometer *)sharedAccelerometer; 6 | + (void)registerObjectForStateRestoration:(id)object restorationIdentifier:(NSString *)restorationIdentifier; 7 | + (UIBlurEffect *)effectWithStyle:(UIBlurEffectStyle)style; 8 | + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 9 | + (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha; 10 | + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 11 | + (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 12 | + (UIColor *)colorWithPatternImage:(UIImage *)image; 13 | + (UIColor *)colorWithCIColor:(CIColor *)ciColor; 14 | + (nullable UIColor *)colorNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; 15 | + (UIDevice *)currentDevice; 16 | + (id)help; 17 | + (id)status; 18 | + (id)checkFocusabilityForItem:(id)item; 19 | + (id)simulateFocusUpdateRequestFromEnvironment:(id)environment; 20 | + (nullable UIFocusSystem *)focusSystemForEnvironment:(id)environment; 21 | + (BOOL)environment:(id)environment containsEnvironment:(id)otherEnvironment; 22 | + (void)registerURL:(NSURL *)soundFileURL forSoundIdentifier:(UIFocusSoundIdentifier)identifier; 23 | + (UIFont *)preferredFontForTextStyle:(UIFontTextStyle)style; 24 | + (UIFont *)preferredFontForTextStyle:(UIFontTextStyle)style compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; 25 | + (nullable UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize; 26 | + (NSArray *)familyNames; 27 | + (NSArray *)fontNamesForFamilyName:(NSString *)familyName; 28 | + (UIFont *)systemFontOfSize:(CGFloat)fontSize; 29 | + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize; 30 | + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize; 31 | + (UIFont *)systemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight; 32 | + (UIFont *)monospacedDigitSystemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight; 33 | + (UIFont *)fontWithDescriptor:(UIFontDescriptor *)descriptor size:(CGFloat)pointSize; 34 | + (UIFontDescriptor *)fontDescriptorWithFontAttributes:(NSDictionary *)attributes; 35 | + (UIFontDescriptor *)fontDescriptorWithName:(NSString *)fontName size:(CGFloat)size; 36 | + (UIFontDescriptor *)preferredFontDescriptorWithTextStyle:(UIFontTextStyle)style; 37 | + (UIFontDescriptor *)preferredFontDescriptorWithTextStyle:(UIFontTextStyle)style compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; 38 | + (NSValue *)valueWithCGPoint:(CGPoint)point; 39 | + (NSValue *)valueWithCGSize:(CGSize)size; 40 | + (NSValue *)valueWithCGRect:(CGRect)rect; 41 | + (Class)rendererContextClass; 42 | + (nullable CGContextRef)contextWithFormat:(UIGraphicsRendererFormat *)format CF_RETURNS_RETAINED; 43 | + (void)prepareCGContext:(CGContextRef)context withRendererContext:(UIGraphicsRendererContext *)rendererContext; 44 | + (nullable UIImage *)imageNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; 45 | + (nullable UIImage *)imageWithContentsOfFile:(NSString *)path; 46 | + (nullable UIImage *)imageWithData:(NSData *)data; 47 | + (nullable UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale; 48 | + (UIImage *)imageWithCGImage:(CGImageRef)cgImage; 49 | + (UIImage *)imageWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation; 50 | + (UIImage *)imageWithCIImage:(CIImage *)ciImage; 51 | + (UIImage *)imageWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation; 52 | + (UIColor *)groupTableViewBackgroundColor; 53 | + (UIColor *)viewFlipsideBackgroundColor; 54 | + (UIColor *)scrollViewTexturedBackgroundColor; 55 | + (UIColor *)underPageBackgroundColor; 56 | + (CGFloat)labelFontSize; 57 | + (CGFloat)buttonFontSize; 58 | + (CGFloat)smallSystemFontSize; 59 | + (CGFloat)systemFontSize; 60 | + (NSString *)persistentStoreName; 61 | + (UIMenuController *)sharedMenuController; 62 | + (UINib *)nibWithNibName:(NSString *)name bundle:(nullable NSBundle *)bundleOrNil; 63 | + (UINib *)nibWithData:(NSData *)data bundle:(nullable NSBundle *)bundleOrNil; 64 | + (UIPasteboard *)generalPasteboard; 65 | + (nullable UIPasteboard *)pasteboardWithName:(UIPasteboardName)pasteboardName create:(BOOL)create; 66 | + (UIPasteboard *)pasteboardWithUniqueName; 67 | + (void)removePasteboardWithName:(UIPasteboardName)pasteboardName; 68 | + (CGFloat)arrowBase; 69 | + (CGFloat)arrowHeight; 70 | + (BOOL)wantsDefaultContentAppearance; 71 | + (UIPrintInfo *)printInfo; 72 | + (BOOL)canPrintURL:(NSURL *)url; 73 | + (BOOL)canPrintData:(NSData *)data; 74 | + (UIPrintInteractionController *)sharedPrintController; 75 | + (BOOL)dictionaryHasDefinitionForTerm:(NSString *)term; 76 | + (UIRegion *)infiniteRegion; 77 | + (void)clearTextInputContextIdentifier:(NSString *)identifier; 78 | + (nullable UIViewController *) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder; 79 | + (nullable id) objectWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder; 80 | + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(nullable NSBundle *)storyboardBundleOrNil; 81 | + (void)learnWord:(NSString *)word; 82 | + (BOOL)hasLearnedWord:(NSString *)word; 83 | + (void)unlearnWord:(NSString *)word; 84 | + (NSArray *)availableLanguages; 85 | + (UITraitCollection *)traitCollectionWithTraitsFromCollections:(NSArray *)traitCollections; 86 | + (UITraitCollection *)traitCollectionWithUserInterfaceIdiom:(UIUserInterfaceIdiom)idiom; 87 | + (UITraitCollection *)traitCollectionWithUserInterfaceStyle:(UIUserInterfaceStyle)userInterfaceStyle; 88 | + (UITraitCollection *)traitCollectionWithLayoutDirection:(UITraitEnvironmentLayoutDirection)layoutDirection; 89 | + (UITraitCollection *)traitCollectionWithDisplayScale:(CGFloat)scale; 90 | + (UITraitCollection *)traitCollectionWithHorizontalSizeClass:(UIUserInterfaceSizeClass)horizontalSizeClass; 91 | + (UITraitCollection *)traitCollectionWithVerticalSizeClass:(UIUserInterfaceSizeClass)verticalSizeClass; 92 | + (UITraitCollection *)traitCollectionWithForceTouchCapability:(UIForceTouchCapability)capability; 93 | + (UITraitCollection *)traitCollectionWithPreferredContentSizeCategory:(UIContentSizeCategory)preferredContentSizeCategory; 94 | + (UITraitCollection *)traitCollectionWithDisplayGamut:(UIDisplayGamut)displayGamut; 95 | + (UIVibrancyEffect *)effectForBlurEffect:(UIBlurEffect *)blurEffect; 96 | + (BOOL)canEditVideoAtPath:(NSString *)videoPath; 97 | + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)attribute; 98 | + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute relativeToLayoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection; 99 | + (BOOL)areAnimationsEnabled; 100 | + (BOOL)requiresConstraintBasedLayout; 101 | + (void)attemptRotationToDeviceOrientation; 102 | -------------------------------------------------------------------------------- /resource/func_orign/uikit_class_instancetype_func.txt: -------------------------------------------------------------------------------- 1 | + (instancetype)indexPathForRow:(NSInteger)row inSection:(NSInteger)section; 2 | + (instancetype)indexPathForItem:(NSInteger)item inSection:(NSInteger)section; 3 | + (instancetype)new; 4 | + (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle; 5 | + (instancetype)appearance; 6 | + (instancetype)appearanceWhenContainedIn:(nullable Class )ContainerClass, ... 7 | + (instancetype)appearanceWhenContainedInInstancesOfClasses:(NSArray> *)containerTypes; 8 | + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait; 9 | + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedIn:(nullable Class )ContainerClass, ... 10 | + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedInInstancesOfClasses:(NSArray> *)containerTypes ; 11 | + (instancetype)iconWithType:(UIApplicationShortcutIconType)type; 12 | + (instancetype)iconWithTemplateImageName:(NSString *)templateImageName; 13 | + (instancetype)fixedAttachmentWithItem:(id )item1 attachedToItem:(id )item2 attachmentAnchor:(CGPoint)point; 14 | + (instancetype)pinAttachmentWithItem:(id )item1 attachedToItem:(id )item2 attachmentAnchor:(CGPoint)point; 15 | + (instancetype)bezierPath; 16 | + (instancetype)bezierPathWithRect:(CGRect)rect; 17 | + (instancetype)bezierPathWithOvalInRect:(CGRect)rect; 18 | + (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii; 19 | + (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise; 20 | + (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath; 21 | + (instancetype)buttonWithType:(UIButtonType)buttonType; 22 | + (instancetype)new; 23 | + (instancetype)layoutAttributesForCellWithIndexPath:(NSIndexPath *)indexPath; 24 | + (instancetype)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind withIndexPath:(NSIndexPath *)indexPath; 25 | + (instancetype)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath; 26 | + (instancetype)contextualActionWithStyle:(UIContextualActionStyle)style title:(nullable NSString *)title handler:(UIContextualActionHandler)handler; 27 | + (instancetype)new; 28 | + (instancetype)new; 29 | + (instancetype)new; 30 | + (instancetype)new; 31 | + (instancetype)new; 32 | + (instancetype)dragField; 33 | + (instancetype)vortexField; 34 | + (instancetype)radialGravityFieldWithPosition:(CGPoint)position; 35 | + (instancetype)noiseFieldWithSmoothness:(CGFloat)smoothness animationSpeed:(CGFloat)speed; 36 | + (instancetype)turbulenceFieldWithSmoothness:(CGFloat)smoothness animationSpeed:(CGFloat)speed; 37 | + (instancetype)springField; 38 | + (instancetype)electricField; 39 | + (instancetype)magneticField; 40 | + (instancetype)new; 41 | + (instancetype)new; 42 | + (instancetype)metricsForTextStyle:(UIFontTextStyle)textStyle; 43 | + (instancetype)formatForTraitCollection:(UITraitCollection *)traitCollection; 44 | + (instancetype)defaultFormat; 45 | + (instancetype)preferredFormat; 46 | + (instancetype)currentCollation; 47 | + (instancetype)new; 48 | + (instancetype)configurationWithActions:(NSArray *)actions; 49 | + (instancetype)new; 50 | + (instancetype)new; 51 | + (instancetype)new; 52 | + (instancetype)new; 53 | + (instancetype)previewForURL:(NSURL *)url; 54 | + (instancetype)previewForURL:(NSURL *)url title:(NSString * _Nullable)title; 55 | + (instancetype)previewForURL:(NSURL *)url target:(UIDragPreviewTarget*)target; 56 | + (instancetype)previewForURL:(NSURL *)url title:(NSString * _Nullable)title target:(UIDragPreviewTarget*)target; 57 | + (instancetype)new; 58 | + (instancetype)passwordRulesWithDescriptor:(NSString *)passwordRulesDescriptor; 59 | + (instancetype)actionGroupWithTitle:(NSString *)title style:(UIPreviewActionStyle)style actions:(NSArray *)actions; 60 | -------------------------------------------------------------------------------- /resource/func_orign/uikit_member_instancetype_func.txt: -------------------------------------------------------------------------------- 1 | - (instancetype)init; 2 | - (instancetype)init; 3 | - (instancetype)init; 4 | - (instancetype)initWithData:(nullable NSData *)contentData ofType:(nullable NSString *)uti; 5 | - (instancetype)initWithSize:(CGSize)size; 6 | - (instancetype)initWithCoder:(NSCoder *)coder; 7 | - (instancetype)initWithName:(NSString *)name itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock; 8 | - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock; 9 | - (instancetype)initWithSystemType:(UIAccessibilityCustomSystemRotorType)type itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock; 10 | - (instancetype)initWithTargetElement:(id)targetElement targetRange:(nullable UITextRange *)targetRange; 11 | - (instancetype)initWithAccessibilityContainer:(id)container; 12 | - (instancetype)init; 13 | - (instancetype)initWithName:(NSString *)name view:(UIView *)view; 14 | - (instancetype)initWithName:(NSString *)name point:(CGPoint)point inView:(UIView *)view; 15 | - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName point:(CGPoint)point inView:(UIView *)view; 16 | - (instancetype)initWithTitle:(nullable NSString *)title delegate:(nullable id)delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 17 | - (instancetype)initWithFrame:(CGRect)frame; 18 | - (instancetype) initWithCoder:(NSCoder *)coder; 19 | - (instancetype)init; 20 | - (instancetype)init; 21 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 22 | - (instancetype)initWithActivityItems:(NSArray *)activityItems applicationActivities:(nullable NSArray<__kindof UIActivity *> *)applicationActivities; 23 | - (instancetype)initWithTitle:(nullable NSString *)title message:(nullable NSString *)message delegate:(nullable id /**/)delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 24 | - (instancetype)init; 25 | - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary> *)userInfo; 26 | - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle; 27 | - (instancetype)initWithItem:(id )item attachedToAnchor:(CGPoint)point; 28 | - (instancetype)initWithItem:(id )item1 attachedToItem:(id )item2; 29 | - (instancetype)init; 30 | - (instancetype)initWithCustomView:(UIView *)customView; 31 | - (instancetype)initWithBarButtonItems:(NSArray *)barButtonItems representativeItem:(nullable UIBarButtonItem *)representativeItem; 32 | - (instancetype)init; 33 | - (instancetype)init; 34 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 35 | - (instancetype)initWithShare:(CKShare *)share container:(CKContainer *)container; 36 | - (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout; 37 | - (instancetype)initWithDropOperation:(UIDropOperation)operation intent:(UICollectionViewDropIntent)intent; 38 | - (instancetype)initWithInsertionIndexPath:(NSIndexPath*)insertionIndexPath reuseIdentifier:(NSString *)reuseIdentifier; 39 | - (instancetype)init; 40 | - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout; 41 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 42 | - (instancetype)init; 43 | - (instancetype)initWithCurrentLayout:(UICollectionViewLayout *)currentLayout nextLayout:(UICollectionViewLayout *)newLayout; 44 | - (instancetype)init; 45 | - (instancetype)initWithItems:(NSArray> *)items; 46 | - (instancetype)initWithColor:(UIColor *)color; 47 | - (instancetype)initWithFileURL:(NSURL *)url; 48 | - (instancetype)init; 49 | - (instancetype)initForOpeningFilesWithContentTypes:(nullable NSArray *)allowedContentTypes; 50 | - (instancetype)initWithNibName:(nullable NSString *)nibName bundle:(nullable NSBundle *)bundle; 51 | - (instancetype)init; 52 | - (instancetype)initWithDocumentTypes:(NSArray *)allowedUTIs inMode:(UIDocumentPickerMode)mode; 53 | - (instancetype)initWithURL:(NSURL *)url inMode:(UIDocumentPickerMode)mode; 54 | - (instancetype)initWithDocumentTypes:(NSArray *)allowedUTIs inMode:(UIDocumentPickerMode)mode; 55 | - (instancetype)initWithURLs:(NSArray *)urls inMode:(UIDocumentPickerMode)mode; 56 | - (instancetype)initWithDelegate:(id)delegate; 57 | - (instancetype)init; 58 | - (instancetype)initWithItemProvider:(NSItemProvider *)itemProvider; 59 | - (instancetype)init; 60 | - (instancetype)initWithView:(UIView *)view parameters:(UIDragPreviewParameters *)parameters; 61 | - (instancetype)initWithView:(UIView *)view; 62 | - (instancetype)init; 63 | - (instancetype)init; 64 | - (instancetype)initWithDelegate:(id)delegate; 65 | - (instancetype)init; 66 | - (instancetype)initWithDropOperation:(UIDropOperation)operation; 67 | - (instancetype)init; 68 | - (instancetype)initWithReferenceView:(UIView *)view; 69 | - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout; 70 | - (instancetype)initWithItems:(NSArray> *)items; 71 | - (instancetype)initWithItems:(NSArray> *)items; 72 | - (instancetype)init; 73 | - (instancetype)init; 74 | - (instancetype)init; 75 | - (instancetype)initWithFontAttributes:(NSDictionary *)attributes; 76 | - (instancetype)init; 77 | - (instancetype)initForTextStyle:(UIFontTextStyle)textStyle; 78 | - (instancetype)initWithSize:(CGSize)size; 79 | - (instancetype)initWithSize:(CGSize)size format:(UIGraphicsImageRendererFormat *)format; 80 | - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsImageRendererFormat *)format; 81 | - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsPDFRendererFormat *)format; 82 | - (instancetype)initWithBounds:(CGRect)bounds; 83 | - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsRendererFormat *)format; 84 | - (instancetype)initWithItems:(NSArray> *)items; 85 | - (instancetype)initWithCGImage:(CGImageRef)cgImage; 86 | - (instancetype)initWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation; 87 | - (instancetype)initWithCIImage:(CIImage *)ciImage; 88 | - (instancetype)initWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation; 89 | - (instancetype)init; 90 | - (instancetype)initWithImage:(nullable UIImage *)image; 91 | - (instancetype)initWithImage:(nullable UIImage *)image highlightedImage:(nullable UIImage *)highlightedImage; 92 | - (instancetype)initWithStyle:(UIImpactFeedbackStyle)style; 93 | - (instancetype)initWithFrame:(CGRect)frame inputViewStyle:(UIInputViewStyle)inputViewStyle; 94 | - (instancetype)init; 95 | - (instancetype)init; 96 | - (instancetype)initWithKeyPath:(NSString *)keyPath type:(UIInterpolatingMotionEffectType)type; 97 | - (instancetype)initWithNavigationBarClass:(nullable Class)navigationBarClass toolbarClass:(nullable Class)toolbarClass; 98 | - (instancetype)initWithTitle:(NSString *)title; 99 | - (instancetype)initWithTransitionStyle:(UIPageViewControllerTransitionStyle)style navigationOrientation:(UIPageViewControllerNavigationOrientation)navigationOrientation options:(nullable NSDictionary *)options; 100 | - (instancetype)init; 101 | - (instancetype)initWithAcceptableTypeIdentifiers:(NSArray *)acceptableTypeIdentifiers; 102 | - (instancetype)initWithTypeIdentifiersForAcceptingClass:(Class)aClass; 103 | - (instancetype)initWithContentViewController:(UIViewController *)viewController; 104 | - (instancetype)initWithPresentedViewController:(UIViewController *)presentedViewController presentingViewController:(nullable UIViewController *)presentingViewController; 105 | - (instancetype)init; 106 | - (instancetype)initWithView:(UIView *)view; 107 | - (instancetype)init; 108 | - (instancetype)initWithText:(NSString *)text; 109 | - (instancetype)initWithAttributedText:(NSAttributedString *)attributedText; 110 | - (instancetype)initWithMarkupText:(NSString *)markupText; 111 | - (instancetype)initWithFrame:(CGRect)frame; 112 | - (instancetype)initWithItems:(NSArray> *)items mode:(UIPushBehaviorMode)mode; 113 | - (instancetype)initWithTerm:(NSString *)term; 114 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 115 | - (instancetype)init; 116 | - (instancetype)init; 117 | - (instancetype)initWithRadius:(CGFloat)radius; 118 | - (instancetype)initWithSize:(CGSize)size; 119 | - (instancetype)inverseRegion; 120 | - (instancetype)regionByUnionWithRegion:(UIRegion *)region; 121 | - (instancetype)regionByDifferenceFromRegion:(UIRegion *)region; 122 | - (instancetype)regionByIntersectionWithRegion:(UIRegion *)region; 123 | - (instancetype)init; 124 | - (instancetype)init; 125 | - (instancetype)initWithFrame:(CGRect)frame; 126 | - (instancetype)initWithSearchController:(UISearchController *)searchController; 127 | - (instancetype)initWithSearchResultsController:(nullable UIViewController *)searchResultsController; 128 | - (instancetype)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController; 129 | - (instancetype)initWithItem:(id )item snapToPoint:(CGPoint)point; 130 | - (instancetype)init; 131 | - (instancetype)initWithFrame:(CGRect)frame; 132 | - (instancetype)initWithCoder:(NSCoder *)coder; 133 | - (instancetype)initWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination; 134 | - (instancetype)init; 135 | - (instancetype)init; 136 | - (instancetype)init; 137 | - (instancetype)initWithTitle:(nullable NSString *)title image:(nullable UIImage *)image tag:(NSInteger)tag; 138 | - (instancetype)initWithTitle:(nullable NSString *)title image:(nullable UIImage *)image selectedImage:(nullable UIImage *)selectedImage; 139 | - (instancetype)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag; 140 | - (instancetype)initWithDropOperation:(UIDropOperation)operation intent:(UITableViewDropIntent)intent; 141 | - (instancetype)initWithInsertionIndexPath:(NSIndexPath *)insertionIndexPath reuseIdentifier:(NSString *)reuseIdentifier rowHeight:(CGFloat)rowHeight; 142 | - (instancetype)init; 143 | - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier; 144 | - (instancetype)initWithStyle:(UITableViewStyle)style; 145 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 146 | - (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier; 147 | - (instancetype)initWithContainer:(UIView *)container center:(CGPoint)center; 148 | - (instancetype)init; 149 | - (instancetype)initWithView:(UIView *)view parameters:(UIDragPreviewParameters *)parameters target:(UIDragPreviewTarget *)target; 150 | - (instancetype)initWithView:(UIView *)view parameters:(UIDragPreviewParameters *)parameters; 151 | - (instancetype)initWithView:(UIView *)view; 152 | - (instancetype)init; 153 | - (instancetype)initWithLayoutManager:(NSLayoutManager*)layoutManager range:(NSRange)range; 154 | - (instancetype)initWithLayoutManager:(NSLayoutManager*)layoutManager range:(NSRange)range unifyRects:(BOOL)unifyRects; 155 | - (instancetype)init; 156 | - (instancetype)initWithTextInput:(UIResponder *)textInput; 157 | - (instancetype)init; 158 | - (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer; 159 | - (instancetype)initWithAnimationCurve:(UIViewAnimationCurve)curve; 160 | - (instancetype)initWithControlPoint1:(CGPoint)point1 controlPoint2:(CGPoint)point2; 161 | - (instancetype)initWithDampingRatio:(CGFloat)ratio; 162 | - (instancetype)init; 163 | - (instancetype)init; 164 | - (instancetype)init; 165 | - (instancetype)initWithFrame:(CGRect)frame; 166 | - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil; 167 | - (instancetype)initWithEffect:(nullable UIVisualEffect *)effect; 168 | -------------------------------------------------------------------------------- /resource/ioswords.txt: -------------------------------------------------------------------------------- 1 | DidFinish WillFinish DidReceive WillTerminate WillChangeStatus DidChange DidFail HandleAction CompletionHandler InitWithNib WillUnload DidUnload ViewLoaded TowardsView WillLayout DidLayout MemoryWarning DismissView DismissModalView ExtendedLayout SetNeeds ShowDetail DidLoad AllowedChildViewControllers ForUnwindSegueAction WillAppear DidAppear WillDisappear DidDisappear WillLayoutSubviews DidLayoutSubviews IsMovingToParent TrackingWithTouch TouchDragInside TouchDragOutside TouchDragEnter TouchDragExit TouchUpInside TouchUpOutside TouchCancel ValueChanged ActionTriggered DidBegin EditingChanged DidEnd DidEndOnExit AllTouchEvents AllEditingEvents ApplicationReserved SystemReserved LayerClass BecomeFocused InsertSubview WillMove DidMove LayoutSubviews SetNeedsDisplay LocalizedCase CommonPrefix RangeOfCharacter ByAppending DisplayName ObjectForKey NextResponder BecomeFirstResponder ResignFirstResponder Cancelled PressesWithEvent LoginSuccess LogoutSuccess GetSuccess LogSuccess PostSuccess UpdateSuccess DeleteSuccess GetContent Failed ViewConfiguration AccountInfo HttpHead LineToView DidBecomeActive Hidden ForAttributedString FieldStyle CachedResponses TitleButton JsonData TipView WithCoder JsonStringDataFrom ForWebView ListFrom Request InternetConnection -------------------------------------------------------------------------------- /resource/random_class_name.txt: -------------------------------------------------------------------------------- 1 | ScrapironTableViewController 2 | EcologyViewController 3 | BankersacceptanceViewController 4 | PuffoutObj 5 | TeleprompterTableViewController 6 | LuciusannaeussenecaObj 7 | SolomonsCollectionViewCell 8 | ShetlandponyObj 9 | SerifObj 10 | CowoakObj 11 | EryngiumyuccifoliumViewController 12 | ArresteddevelopmentView 13 | PkuCollectionController 14 | PhalgunaViewController 15 | WesterntoadCollectionViewCell 16 | FamilyhamamelidaceaeObj 17 | NonunionizedCollectionController 18 | UsherinCell 19 | RadiigerafuscoglebaTableViewController 20 | EuphractusObj 21 | OxaprozinCollectionController 22 | DynamicviscosityCollectionViewCell 23 | OverpoweredViewController 24 | DemeaningCollectionViewCell 25 | SeriouslyViewController 26 | SqueezeboxTableViewController 27 | -------------------------------------------------------------------------------- /resource/random_func_create.txt: -------------------------------------------------------------------------------- 1 | {"params": ["float", "char", "float"], "descrip": ["Deanship", "Exponential", "Spikeout"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "CandiedfruitBecomeFocused"} 2 | {"params": ["long long", "void *"], "descrip": ["Cauliflower", "Prc"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "CabassousunicinctusDidMove"} 3 | {"params": ["long long", "int", "char", "void *", "char"], "descrip": ["Middleoftheroader", "Wardheeler", "Microstrobos", "Jamesaugustusmurray", "Sobersided"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "IntwowaysObjectForKey"} 4 | {"params": ["void *", "float", "void *", "long long"], "descrip": ["Wabashriver", "Coronarybypasssurgery", "Pocketbook", "Plughat"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "RepresentationWillMove"} 5 | {"params": ["void *", "int", "int"], "descrip": ["Piroshki", "Muscaricomosum", "Slovakian"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "CapsicumfrutescensbaccatumAllowedChildViewControllers"} 6 | {"params": ["double", "float"], "descrip": ["Castorbeanplant", "Spanishchestnut"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "CouncilofeconomicadvisorsViewLoaded"} 7 | {"params": ["long long", "long long"], "descrip": ["Feb", "Sturtpea"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "TwirlerWillMove"} 8 | {"params": ["long long"], "descrip": ["Velvetosier"], "class_name": "ScrapironTableViewController", "returntype": "void", "funcname": "OutofworkFailed"} 9 | {"params": ["int", "float"], "descrip": ["Vitrified", "Bilsted"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "RivercamHandleAction"} 10 | {"params": ["long long", "float", "void *", "float", "char"], "descrip": ["Sharksucker", "Reinorchid", "Alive", "Eisegesis", "Sinewy"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "PhosphinePostSuccess"} 11 | {"params": ["long long"], "descrip": ["Aptenodytespatagonica"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "SwingaboutPressesWithEvent"} 12 | {"params": ["float", "void *", "double"], "descrip": ["Coss", "Respiratorydistresssyndromeofthenewborn", "Miracle"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "SixteenthnoteTrackingWithTouch"} 13 | {"params": ["void *", "void *", "float", "bool"], "descrip": ["Astaticgalvanometer", "Gumweed", "Pademelon", "Tricholomairinum"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "AucCommonPrefix"} 14 | {"params": ["char", "bool"], "descrip": ["Rooting", "Herbertkitchener"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "OccultistAllTouchEvents"} 15 | {"params": ["int", "char", "long long", "bool", "void *"], "descrip": ["Unturned", "Leechlike", "Bleary", "Statisticalmethod", "Economy"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "MaldivanCommonPrefix"} 16 | {"params": ["float", "double", "float", "bool", "double"], "descrip": ["Sympathectomy", "Meshuggener", "Cartwheel", "Cliffpenstemon", "Tear"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "WeedoutDeleteSuccess"} 17 | {"params": ["bool", "float", "bool", "char"], "descrip": ["Unripe", "Bite", "Cucurbitamaxima", "Saintmihiel"], "class_name": "EcologyViewController", "returntype": "void", "funcname": "ProclivityGetContent"} 18 | {"params": ["long long", "char"], "descrip": ["Pantotheria", "Pipturus"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "UnpreventableRangeOfCharacter"} 19 | {"params": ["char", "bool", "char"], "descrip": ["Oscillatoriaceae", "Reciprocating", "Hooved"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "ToiletrollApplicationReserved"} 20 | {"params": ["bool"], "descrip": ["Looksharp"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "SkinninessTouchCancel"} 21 | {"params": ["char", "int", "double"], "descrip": ["Mutafacient", "Dramaticperformance", "Bunyan"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "WorldwarTouchDragOutside"} 22 | {"params": ["void *", "long long", "double", "bool", "char"], "descrip": ["Miliaria", "Stylomeconheterophyllum", "Blackhuckleberry", "Laughsoftly", "Server"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "BeermakerWillLayout"} 23 | {"params": ["int", "char"], "descrip": ["Plexusceliacus", "Doublecrosser"], "class_name": "BankersacceptanceViewController", "returntype": "void", "funcname": "DespairingShowDetail"} 24 | {"params": ["char", "double", "int", "bool"], "descrip": ["Kosteletzya", "Judgesrobe", "Vneck", "Used"], "class_name": "PuffoutObj", "returntype": "void", "funcname": "ImpostorValueChanged"} 25 | {"params": ["int", "int", "double"], "descrip": ["Montmartre", "Theophrastaceae", "Ladycrab"], "class_name": "PuffoutObj", "returntype": "void", "funcname": "MoistnessDismissModalView"} 26 | {"params": ["double"], "descrip": ["Renormalize"], "class_name": "PuffoutObj", "returntype": "void", "funcname": "IntransitiveverbformDidChange"} 27 | {"params": ["double", "float"], "descrip": ["Lovoaklaineana", "Craterlakenationalpark"], "class_name": "PuffoutObj", "returntype": "void", "funcname": "ConfusedTouchDragInside"} 28 | {"params": ["int"], "descrip": ["Checkbook"], "class_name": "PuffoutObj", "returntype": "void", "funcname": "CucurbitaLogSuccess"} 29 | {"params": ["double", "long long", "char", "void *", "void *"], "descrip": ["Smoky", "Kitul", "Northseekingpole", "Inthelead", "Expostulation"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "OxyacetyleneTowardsView"} 30 | {"params": ["char", "bool"], "descrip": ["Assuasive", "Hebraic"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "PalaquiumGetSuccess"} 31 | {"params": ["double", "char", "double", "float"], "descrip": ["Walkto", "Torch", "Genuserysimum", "Samiacynthia"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "UstilaginoideaPostSuccess"} 32 | {"params": ["bool", "long long"], "descrip": ["Genusmoschus", "Genusglossodia"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "TalcumApplicationReserved"} 33 | {"params": ["void *", "double", "float"], "descrip": ["Reprisal", "Polenta", "Wherefrom"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "OrdergruiformesSystemReserved"} 34 | {"params": ["float", "char", "double", "bool"], "descrip": ["Ribes", "Irreproducibility", "Bluenote", "Dennisgabor"], "class_name": "TeleprompterTableViewController", "returntype": "void", "funcname": "KolkwitziaamabilisDismissModalView"} 35 | {"params": ["float", "double", "int", "int"], "descrip": ["Zestfulness", "Flowerpeople", "Numidinae", "Typegenus"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "GrowupTouchCancel"} 36 | {"params": ["float", "double", "bool"], "descrip": ["Genuspalaemon", "Tubenosedfruitbat", "Achilleaptarmica"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "HerrickTouchCancel"} 37 | {"params": ["void *", "char", "double", "char"], "descrip": ["Territorialdominion", "Croak", "Vodka", "Toothbrush"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "CabotGetSuccess"} 38 | {"params": ["char", "bool", "long long"], "descrip": ["Sacristy", "Corking", "Godliness"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "HualapaiTouchDragExit"} 39 | {"params": ["long long", "float", "bool", "double", "int"], "descrip": ["Rico", "Physicsdepartment", "Inevitable", "Bookofaccount", "Haveintercourse"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "PygmyActionTriggered"} 40 | {"params": ["double", "void *", "bool", "double", "bool"], "descrip": ["Roasting", "Backpedal", "Wollaston", "Inductioncoil", "Jan"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "StreptococcusanhemolyticusIsMovingToParent"} 41 | {"params": ["bool"], "descrip": ["Anaphrodisiac"], "class_name": "LuciusannaeussenecaObj", "returntype": "void", "funcname": "AraliaceaeRangeOfCharacter"} 42 | {"params": ["void *", "double", "double", "bool", "void *"], "descrip": ["Numbersracket", "Genuscichorium", "Seel", "Percentum", "Pommelhorse"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "RicinusLogSuccess"} 43 | {"params": ["void *", "int"], "descrip": ["Behaviortherapy", "Prairie"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "BaptisialacteaExtendedLayout"} 44 | {"params": ["bool", "float", "void *"], "descrip": ["Roadblock", "Marcblitzstein", "Winterheath"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "InstitutionalizedWillAppear"} 45 | {"params": ["void *", "char", "void *", "bool", "long long"], "descrip": ["Harmonic", "Maternally", "Dothedishes", "Interestinglyenough", "Romeo"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "AcneiformDidChange"} 46 | {"params": ["char", "float"], "descrip": ["Chlortetracycline", "Iceboat"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "GenusemberizaDidAppear"} 47 | {"params": ["double", "float"], "descrip": ["Familycannaceae", "Cacaobean"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "ChordomesodermValueChanged"} 48 | {"params": ["bool", "bool", "float", "int", "int"], "descrip": ["Cheiranthusallionii", "Hummock", "Sexactivity", "Wintersbarkfamily", "Birdseyeview"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "OsteophyteNextResponder"} 49 | {"params": ["double", "int"], "descrip": ["Lowquality", "Snidely"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "TalmudicliteratureLayerClass"} 50 | {"params": ["double", "double", "double"], "descrip": ["Hollering", "Souwest", "Gerardiapedicularia"], "class_name": "SolomonsCollectionViewCell", "returntype": "void", "funcname": "AgaragarDidAppear"} 51 | {"params": ["char", "double", "bool", "float"], "descrip": ["Oldstager", "Unstratified", "Lobarpneumonia", "Promotionalexpense"], "class_name": "ShetlandponyObj", "returntype": "void", "funcname": "DermalLayoutSubviews"} 52 | {"params": ["long long", "float"], "descrip": ["Veronal", "Nitrocotton"], "class_name": "ShetlandponyObj", "returntype": "void", "funcname": "GladsomeTrackingWithTouch"} 53 | {"params": ["char"], "descrip": ["Bananaskin"], "class_name": "ShetlandponyObj", "returntype": "void", "funcname": "LivebirthAllEditingEvents"} 54 | {"params": ["char", "float", "bool", "long long"], "descrip": ["Fucus", "Buddybuddy", "Porkfish", "Leucogenes"], "class_name": "ShetlandponyObj", "returntype": "void", "funcname": "SubsidiaryledgerDidBegin"} 55 | {"params": ["long long", "void *", "void *", "void *", "void *"], "descrip": ["Letter", "Pleasureboat", "Juneberryholly", "Lobulariamaritima", "Cephalochordata"], "class_name": "ShetlandponyObj", "returntype": "void", "funcname": "WesternblackberryWillMove"} 56 | {"params": ["int"], "descrip": ["Xtc"], "class_name": "SerifObj", "returntype": "void", "funcname": "TreadingwaterSetNeeds"} 57 | {"params": ["long long", "long long", "char"], "descrip": ["Yambean", "Orinoco", "Genuspithecia"], "class_name": "SerifObj", "returntype": "void", "funcname": "PropertymanLocalizedCase"} 58 | {"params": ["long long", "bool", "int", "double", "int"], "descrip": ["Uselessly", "Doubledecomposition", "Genusursinia", "Cheddar", "Atrioventricularbundle"], "class_name": "SerifObj", "returntype": "void", "funcname": "IndonesianmonetaryunitDidLayoutSubviews"} 59 | {"params": ["char", "bool", "bool", "void *", "char"], "descrip": ["Islamicrepublicofmauritania", "Buttontree", "Calciferol", "Interchangeably", "Greshamslaw"], "class_name": "SerifObj", "returntype": "void", "funcname": "LatanierpalmLocalizedCase"} 60 | {"params": ["bool"], "descrip": ["Shrivelled"], "class_name": "SerifObj", "returntype": "void", "funcname": "KeActionTriggered"} 61 | {"params": ["float", "bool"], "descrip": ["Tonicepilepsy", "Megacolon"], "class_name": "SerifObj", "returntype": "void", "funcname": "GlottisTouchCancel"} 62 | {"params": ["bool"], "descrip": ["Element"], "class_name": "SerifObj", "returntype": "void", "funcname": "MaltreatedAllEditingEvents"} 63 | {"params": ["char", "long long", "int"], "descrip": ["Nomenclature", "Ladderback", "Hebraic"], "class_name": "CowoakObj", "returntype": "void", "funcname": "EnthuseApplicationReserved"} 64 | {"params": ["char", "bool", "char", "char", "long long"], "descrip": ["Twentyfour", "Unmotorised", "Genuspuffinus", "Severing", "Gluteusminimus"], "class_name": "CowoakObj", "returntype": "void", "funcname": "VoznesenskiWillChangeStatus"} 65 | {"params": ["void *", "int", "int", "long long"], "descrip": ["Publicnudity", "Puppetstate", "Ignescent", "Applejuice"], "class_name": "CowoakObj", "returntype": "void", "funcname": "AorticaneurysmCommonPrefix"} 66 | {"params": ["char"], "descrip": ["Zikkurat"], "class_name": "CowoakObj", "returntype": "void", "funcname": "HelpfullyDidLoad"} 67 | {"params": ["long long"], "descrip": ["Architectonics"], "class_name": "CowoakObj", "returntype": "void", "funcname": "ConsumerfinancecompanyPostSuccess"} 68 | {"params": ["float"], "descrip": ["Returnaddress"], "class_name": "CowoakObj", "returntype": "void", "funcname": "MucoraceaeLogoutSuccess"} 69 | {"params": ["void *", "bool", "long long", "char", "bool"], "descrip": ["Tarantula", "Unappendaged", "Yellowcattleyguava", "Comparability", "Vetch"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "EdwardeveretthaleWillUnload"} 70 | {"params": ["void *", "bool", "void *", "float"], "descrip": ["Quiaquia", "Sidewise", "Redeemable", "Synezesis"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "TechnicalityAllTouchEvents"} 71 | {"params": ["int", "char", "bool", "double"], "descrip": ["Fern", "Familylaridae", "Familyhemerobiidae", "Frederickmoorevinson"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "BellshapeTouchDragExit"} 72 | {"params": ["char", "bool", "long long"], "descrip": ["Amsoniatabernaemontana", "Spermbank", "Bloodbrotherhood"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "TimeplanTouchDragEnter"} 73 | {"params": ["double", "int"], "descrip": ["Saccharide", "Imagism"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "HydrochloricacidDidLayout"} 74 | {"params": ["int", "float"], "descrip": ["Organelle", "Synchronicity"], "class_name": "EryngiumyuccifoliumViewController", "returntype": "void", "funcname": "SinclairlewisDidEnd"} 75 | {"params": ["double", "char", "void *", "char"], "descrip": ["Benhogan", "Cryptographically", "Graduality", "Rambling"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "SaddeningDidEndOnExit"} 76 | {"params": ["float", "void *", "void *", "bool", "double"], "descrip": ["Lopoff", "Trestlebridge", "Primemover", "Ehadhamen", "Microdot"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "ApostleofgermanyGetContent"} 77 | {"params": ["double", "void *"], "descrip": ["Slather", "Worldweary"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "MileBecomeFirstResponder"} 78 | {"params": ["int", "double", "int", "double", "void *"], "descrip": ["Coffin", "Americanstargrass", "Blastoff", "Sciolism", "Faunus"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "ReportDidReceive"} 79 | {"params": ["char"], "descrip": ["Calfsliver"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "BlockofmetalWillLayoutSubviews"} 80 | {"params": ["long long", "char"], "descrip": ["Marattiasalicina", "Darter"], "class_name": "ArresteddevelopmentView", "returntype": "void", "funcname": "DevilsclawWillAppear"} 81 | {"params": ["bool", "long long", "float", "void *"], "descrip": ["Soundout", "Unrhetorical", "Lysimachiaquadrifolia", "Dayofreckoning"], "class_name": "PkuCollectionController", "returntype": "void", "funcname": "GerridaeMemoryWarning"} 82 | {"params": ["void *", "int", "long long", "double", "void *"], "descrip": ["Valdosta", "Spiegel", "Bartholdgeorgeniebuhr", "Gramicidin", "Butterbur"], "class_name": "PkuCollectionController", "returntype": "void", "funcname": "ClinicaltrialWillDisappear"} 83 | {"params": ["float"], "descrip": ["Engender"], "class_name": "PkuCollectionController", "returntype": "void", "funcname": "FluorouracilTouchDragOutside"} 84 | {"params": ["char", "bool", "int", "char"], "descrip": ["Greatauk", "Switchgrass", "Placekicker", "Olivetreeagaric"], "class_name": "PkuCollectionController", "returntype": "void", "funcname": "MysidaeLocalizedCase"} 85 | {"params": ["float", "void *", "char", "void *", "double"], "descrip": ["Mediate", "Airsac", "Scrubup", "Almaty", "Ordertinamiformes"], "class_name": "PhalgunaViewController", "returntype": "void", "funcname": "ShankTouchDragOutside"} 86 | {"params": ["char", "long long", "bool", "bool"], "descrip": ["Penetrable", "Foldingmoney", "Wordsworthian", "Frontbencher"], "class_name": "PhalgunaViewController", "returntype": "void", "funcname": "GenusartemiaDidMove"} 87 | {"params": ["double", "int", "void *", "int"], "descrip": ["Imaum", "Commoner", "Unsaid", "Centranthus"], "class_name": "PhalgunaViewController", "returntype": "void", "funcname": "PseudoscienceApplicationReserved"} 88 | {"params": ["long long", "double"], "descrip": ["Male", "Factorxiii"], "class_name": "PhalgunaViewController", "returntype": "void", "funcname": "ProlifefactionInitWithNib"} 89 | {"params": ["int", "bool", "long long", "bool"], "descrip": ["Freezedry", "Somnambulism", "Returnaddress", "Genusophiophagus"], "class_name": "WesterntoadCollectionViewCell", "returntype": "void", "funcname": "CoregonusclupeaformisDeleteSuccess"} 90 | {"params": ["char"], "descrip": ["Malignment"], "class_name": "WesterntoadCollectionViewCell", "returntype": "void", "funcname": "StoverUpdateSuccess"} 91 | {"params": ["float", "double", "int", "void *"], "descrip": ["Brazilian", "Turnaloss", "Suffer", "Takenote"], "class_name": "WesterntoadCollectionViewCell", "returntype": "void", "funcname": "LorchelDeleteSuccess"} 92 | {"params": ["char", "int"], "descrip": ["Hindermost", "Distastefulness"], "class_name": "WesterntoadCollectionViewCell", "returntype": "void", "funcname": "SewerratUpdateSuccess"} 93 | {"params": ["float", "void *", "float"], "descrip": ["Capitalofcolombia", "Fiedler", "Unnotched"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "WeaversbroomSystemReserved"} 94 | {"params": ["void *", "char"], "descrip": ["Chicoryplant", "Apiculture"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "SuitablenessNextResponder"} 95 | {"params": ["long long", "bool", "char"], "descrip": ["Shattering", "Setonfire", "Molischreaction"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "SolareclipseViewLoaded"} 96 | {"params": ["float", "double"], "descrip": ["Squirmer", "Bent"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "BloodForUnwindSegueAction"} 97 | {"params": ["double", "char", "double", "char", "float"], "descrip": ["Showingmercy", "Sheared", "Frequency", "Libertyship", "Fullback"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "ControlkeyDidChange"} 98 | {"params": ["long long", "bool", "float"], "descrip": ["Softie", "Nepali", "Picumnus"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "UnassuredIsMovingToParent"} 99 | {"params": ["void *", "char"], "descrip": ["Prolamine", "Billionth"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "BaseballseasonRangeOfCharacter"} 100 | {"params": ["double", "bool"], "descrip": ["Socialdancing", "Whitsun"], "class_name": "FamilyhamamelidaceaeObj", "returntype": "void", "funcname": "SarcosineWillUnload"} 101 | {"params": ["bool", "long long", "char"], "descrip": ["Recipientrole", "Genuspezophaps", "Widely"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "ParrotlikeDidEnd"} 102 | {"params": ["void *", "float"], "descrip": ["Prunusdomesticainsititia", "Hondurasrosewood"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "BrabancongriffonTouchUpOutside"} 103 | {"params": ["double", "char", "long long", "double", "int"], "descrip": ["Wassailer", "Bayonet", "Mountainstandardtime", "Familyglobigerinidae", "Bioterrorism"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "HabenariaalbifloraDidAppear"} 104 | {"params": ["char", "int", "long long", "int", "bool"], "descrip": ["Zebra", "Stovepipe", "Genuscercidium", "Fingerfood", "Smallchange"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "TheodorerooseveltCommonPrefix"} 105 | {"params": ["long long", "long long", "bool", "bool"], "descrip": ["Rockymountainmaple", "Agreement", "Mugopine", "Mugfile"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "TwinfallsWillLayout"} 106 | {"params": ["long long", "float", "double", "char", "bool"], "descrip": ["Wetcell", "Sweetalison", "Nutrify", "Stthomas", "Zoomalong"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "LeniencyCommonPrefix"} 107 | {"params": ["int"], "descrip": ["Oredressing"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "KilometreForUnwindSegueAction"} 108 | {"params": ["int", "double", "char", "long long"], "descrip": ["Prizering", "Physicaltopology", "Rumproast", "Childbed"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "OfoDidReceive"} 109 | {"params": ["long long", "int", "void *"], "descrip": ["Cocksucker", "Swearout", "Subclassdipnoi"], "class_name": "NonunionizedCollectionController", "returntype": "void", "funcname": "VancomycinTouchDragOutside"} 110 | {"params": ["char", "void *", "float", "bool", "char"], "descrip": ["Schnook", "Nureyev", "Stoneface", "Ladieseardrops", "Domesticsheep"], "class_name": "UsherinCell", "returntype": "void", "funcname": "TensimeterDidLoad"} 111 | {"params": ["bool"], "descrip": ["Involve"], "class_name": "UsherinCell", "returntype": "void", "funcname": "JaffarDidDisappear"} 112 | {"params": ["void *", "long long", "int", "float"], "descrip": ["Lightingup", "Conveyable", "Buffalognat", "Nonappearance"], "class_name": "UsherinCell", "returntype": "void", "funcname": "SoundlessnessWillLayout"} 113 | {"params": ["float", "int"], "descrip": ["Genusgarrulus", "Respectably"], "class_name": "UsherinCell", "returntype": "void", "funcname": "AccountsreceivableBecomeFirstResponder"} 114 | {"params": ["double", "void *", "long long"], "descrip": ["Chalcisfly", "Elijah", "Octopodidae"], "class_name": "UsherinCell", "returntype": "void", "funcname": "YouthgangWillLayoutSubviews"} 115 | {"params": ["int", "char", "long long", "int"], "descrip": ["Sociolinguistically", "Casper", "Communistpartyofkampuchea", "Nadene"], "class_name": "UsherinCell", "returntype": "void", "funcname": "TrackerDidFinish"} 116 | {"params": ["bool", "long long"], "descrip": ["Congenial", "Ritenuto"], "class_name": "UsherinCell", "returntype": "void", "funcname": "AbronialatifoliaTouchDragInside"} 117 | {"params": ["long long", "bool"], "descrip": ["Phaseiiiclinicaltrial", "Outergarment"], "class_name": "UsherinCell", "returntype": "void", "funcname": "TurneryWillAppear"} 118 | {"params": ["long long", "char", "double", "double", "long long"], "descrip": ["Withhold", "Pogostemon", "Righttolife", "Germicidal", "Colloquium"], "class_name": "RadiigerafuscoglebaTableViewController", "returntype": "void", "funcname": "TylenchidaeBecomeFocused"} 119 | {"params": ["bool", "float", "long long", "float"], "descrip": ["Soudan", "Samolusvalerandii", "Firehouse", "Cardinalate"], "class_name": "RadiigerafuscoglebaTableViewController", "returntype": "void", "funcname": "EgestLogSuccess"} 120 | {"params": ["long long", "bool", "int"], "descrip": ["Infeasible", "Leonotisleonurus", "Factorisation"], "class_name": "RadiigerafuscoglebaTableViewController", "returntype": "void", "funcname": "PostwarCompletionHandler"} 121 | {"params": ["int", "float", "int", "void *"], "descrip": ["Sensorimotorregion", "Donnean", "Global", "Publishingcompany"], "class_name": "RadiigerafuscoglebaTableViewController", "returntype": "void", "funcname": "SocalledDismissView"} 122 | {"params": ["long long", "int", "int"], "descrip": ["Familygalbulidae", "Asadha", "Indexing"], "class_name": "EuphractusObj", "returntype": "void", "funcname": "MarianandersonDismissView"} 123 | {"params": ["float"], "descrip": ["Nephropathy"], "class_name": "EuphractusObj", "returntype": "void", "funcname": "TeargasWillUnload"} 124 | {"params": ["char", "void *"], "descrip": ["Axiom", "Dwgriffith"], "class_name": "EuphractusObj", "returntype": "void", "funcname": "RacinggigLocalizedCase"} 125 | {"params": ["char", "char", "long long", "bool"], "descrip": ["Corallorhizamaculata", "Doublestandard", "Williamfeltonrussell", "Upperpaleolithic"], "class_name": "EuphractusObj", "returntype": "void", "funcname": "ArchnessTouchDragEnter"} 126 | {"params": ["long long", "int", "bool"], "descrip": ["Muckle", "Oldstager", "Golliwogg"], "class_name": "EuphractusObj", "returntype": "void", "funcname": "DonorcardDidMove"} 127 | {"params": ["long long", "bool", "void *", "void *"], "descrip": ["Hatemail", "Storagecell", "Talebearing", "Professionaldancer"], "class_name": "OxaprozinCollectionController", "returntype": "void", "funcname": "HangupFailed"} 128 | {"params": ["long long", "int"], "descrip": ["Slightcare", "Alongside"], "class_name": "OxaprozinCollectionController", "returntype": "void", "funcname": "MoonDidDisappear"} 129 | {"params": ["int", "bool", "bool", "bool", "char"], "descrip": ["Treponemataceae", "Viridity", "Viscousness", "Johannsebastianbach", "Communicatingartery"], "class_name": "OxaprozinCollectionController", "returntype": "void", "funcname": "CystoparalysisTowardsView"} 130 | {"params": ["float", "bool", "char", "float"], "descrip": ["Foxtailmillet", "Hyacinthoides", "Semanticrole", "Woozy"], "class_name": "OxaprozinCollectionController", "returntype": "void", "funcname": "HydrationDismissView"} 131 | {"params": ["char", "char"], "descrip": ["Funniness", "Waxing"], "class_name": "OxaprozinCollectionController", "returntype": "void", "funcname": "TriplochitonscleroxcylonWillLayoutSubviews"} 132 | {"params": ["long long", "bool"], "descrip": ["Spurgear", "Inlet"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "ClodhopperBecomeFocused"} 133 | {"params": ["float", "char", "void *"], "descrip": ["Pompousness", "Incurable", "Taxidancer"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "MonocarpousplantCommonPrefix"} 134 | {"params": ["float", "double", "long long"], "descrip": ["Thomaswoodrowwilson", "Abomasum", "Publiusvergiliusmaro"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "CrewcutFailed"} 135 | {"params": ["int"], "descrip": ["Runningaway"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "CortinariusgentilisCancelled"} 136 | {"params": ["float", "long long"], "descrip": ["Devicedriver", "Amusingly"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "WinemakersyeastDidLayout"} 137 | {"params": ["bool", "double"], "descrip": ["Perseaborbonia", "Makingknown"], "class_name": "DynamicviscosityCollectionViewCell", "returntype": "void", "funcname": "UnforcefulActionTriggered"} 138 | {"params": ["void *", "float"], "descrip": ["Pericarp", "Ceylonite"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "InnovationDidDisappear"} 139 | {"params": ["float"], "descrip": ["Ithunn"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "AidoneusValueChanged"} 140 | {"params": ["long long", "bool"], "descrip": ["Gobbet", "Clementrichardattlee"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "InodorousAllTouchEvents"} 141 | {"params": ["void *", "double", "double"], "descrip": ["Haricot", "Extrauterinegestation", "Lochia"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "DatrilSetNeedsDisplay"} 142 | {"params": ["float", "long long", "long long", "double"], "descrip": ["Florescence", "Salviniaauriculata", "Lubber", "Milkyway"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "MidDismissView"} 143 | {"params": ["void *"], "descrip": ["Betulalenta"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "WeisenheimerInitWithNib"} 144 | {"params": ["char"], "descrip": ["Thrushnightingale"], "class_name": "OverpoweredViewController", "returntype": "void", "funcname": "StandupcomedianLogoutSuccess"} 145 | {"params": ["void *", "int"], "descrip": ["Oxyopia", "Genusnuphar"], "class_name": "DemeaningCollectionViewCell", "returntype": "void", "funcname": "EnglutViewLoaded"} 146 | {"params": ["long long", "char", "char", "char", "char"], "descrip": ["Execrate", "Louisxv", "Facialgesture", "Venacervicalisprofunda", "Hemicrania"], "class_name": "DemeaningCollectionViewCell", "returntype": "void", "funcname": "ChattahoocheeDidEndOnExit"} 147 | {"params": ["char"], "descrip": ["Bitbybit"], "class_name": "DemeaningCollectionViewCell", "returntype": "void", "funcname": "UncontroversialDidLayout"} 148 | {"params": ["int", "bool", "void *"], "descrip": ["Novice", "Familycaproidae", "Dartthrower"], "class_name": "DemeaningCollectionViewCell", "returntype": "void", "funcname": "JohnburgoyneGetSuccess"} 149 | {"params": ["float"], "descrip": ["Heteronym"], "class_name": "SeriouslyViewController", "returntype": "void", "funcname": "WeightinessDidEnd"} 150 | {"params": ["bool", "double", "bool", "void *", "void *"], "descrip": ["Turtlenecked", "Healthandhumanservices", "Bigenchilada", "Variola", "Massachusettsfern"], "class_name": "SeriouslyViewController", "returntype": "void", "funcname": "HandingloveDidMove"} 151 | {"params": ["int", "long long", "char", "void *", "bool"], "descrip": ["Ferryman", "Foulup", "Oceangoing", "Boat", "Raiment"], "class_name": "SeriouslyViewController", "returntype": "void", "funcname": "UteUpdateSuccess"} 152 | {"params": ["float", "void *", "float", "long long"], "descrip": ["Saintfrancis", "Louisxv", "Counseltothecrown", "Palaeogeography"], "class_name": "SeriouslyViewController", "returntype": "void", "funcname": "LymphcellDidLoad"} 153 | {"params": ["void *", "void *", "void *", "char", "void *"], "descrip": ["Sida", "Aeromechanics", "Marriageceremony", "Fatty", "Hyssop"], "class_name": "SqueezeboxTableViewController", "returntype": "void", "funcname": "WebbDismissModalView"} 154 | {"params": ["float", "bool", "long long"], "descrip": ["Genuscapella", "Hudsoniaericoides", "Irredentist"], "class_name": "SqueezeboxTableViewController", "returntype": "void", "funcname": "DeadroomLayoutSubviews"} 155 | {"params": ["void *", "long long", "void *"], "descrip": ["Listlessly", "Sinuous", "Uratemia"], "class_name": "SqueezeboxTableViewController", "returntype": "void", "funcname": "TurnaroundDeleteSuccess"} 156 | {"params": ["long long"], "descrip": ["Charitable"], "class_name": "SqueezeboxTableViewController", "returntype": "void", "funcname": "ArboraryLogoutSuccess"} 157 | {"params": ["bool", "float"], "descrip": ["Mullus", "Genuscystopteris"], "class_name": "SqueezeboxTableViewController", "returntype": "void", "funcname": "GermanmilletDidReceive"} 158 | -------------------------------------------------------------------------------- /writecode/analysis/analys.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import analysisstring 3 | import sys 4 | import os 5 | 6 | work_path = "/Users/animenzzz/GitCode/Confuse/resource" 7 | 8 | file_path1 = f"{work_path}/func_orign/uikit_class_func.txt" 9 | file_json_path1 = f"{work_path}/func_analysised/uikit_class_func.txt" 10 | 11 | 12 | file_path2 = f"{work_path}/func_orign/uikit_class_instancetype_func.txt" 13 | file_json_path2 = f"{work_path}/func_analysised/uikit_class_instancetype_func.txt" 14 | 15 | file_path3 = f"{work_path}/func_orign/uikit_member_func.txt" 16 | file_json_path3 = f"{work_path}/func_analysised/uikit_member_func.txt" 17 | 18 | file_path4 = f"{work_path}/func_orign/uikit_member_instancetype_func.txt" 19 | file_json_path4 = f"{work_path}/func_analysised/uikit_member_instancetype_func.txt" 20 | 21 | 22 | if os.path.exists(file_json_path1): 23 | os.remove(file_json_path1) 24 | 25 | if os.path.exists(file_json_path2): 26 | os.remove(file_json_path2) 27 | 28 | if os.path.exists(file_json_path3): 29 | os.remove(file_json_path3) 30 | 31 | if os.path.exists(file_json_path4): 32 | os.remove(file_json_path4) 33 | 34 | for line in open(file_path1): 35 | analysisstring.func(f'{line}',file_json_path1) 36 | 37 | for line in open(file_path2): 38 | analysisstring.func(f'{line}',file_json_path2) 39 | 40 | for line in open(file_path3): 41 | analysisstring.func(f'{line}',file_json_path3) 42 | 43 | for line in open(file_path4): 44 | analysisstring.func(f'{line}',file_json_path4) 45 | -------------------------------------------------------------------------------- /writecode/analysis/analysisstring.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys 3 | import os 4 | import re 5 | import json 6 | def func(funcstring,jsonoutputfile): 7 | 8 | #获取参数类型,返回值类型 9 | matchObj = re.findall('\((.*?)\)', funcstring) 10 | resultDic = {} 11 | resultDic["params"] = {} 12 | 13 | if matchObj: 14 | resultDic["returntype"] = matchObj[0] 15 | for num in range(1,len(matchObj)): 16 | resultDic["params"] = matchObj[1:len(matchObj)] 17 | 18 | #获取函数名,参数描述 19 | descrip = re.sub(u'\((.*?)\)', "",funcstring) 20 | list1 = descrip.split(' ') 21 | descriparr = [] 22 | if descrip: 23 | index = str(list1[1]).find(":") 24 | funcname_string = str(list1[1])[0:index] 25 | resultDic["funcname"] = str(funcname_string).strip(";") 26 | for num in range(2,len(list1)): 27 | tmp = str(list1[num]) 28 | index = tmp.find(":") 29 | tmp1 = tmp[0:index] 30 | descriparr.append(tmp[0:index]) 31 | resultDic["descrip"] = descriparr 32 | 33 | jsonfile = open(jsonoutputfile,'a+') 34 | jsonfile.writelines(json.dumps(resultDic)+'\n') 35 | jsonfile.close() -------------------------------------------------------------------------------- /writecode/codemodel.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys 3 | import os 4 | import randomvalue 5 | import re 6 | import json 7 | 8 | 9 | if_num_min = 1 10 | if_num_max = 5 11 | 12 | #最小值不能修改!!! 13 | switch_num_min = 2 14 | switch_num_max = 5 15 | 16 | func_num_min = 1 17 | func_num_max = 5 18 | 19 | tab_level_1 = "\t" 20 | tab_level_2 = "\t\t" 21 | tab_level_3 = "\t\t\t" 22 | 23 | 24 | property_list = [\ 25 | "@property (nonatomic, assign) int ",\ 26 | "@property (nonatomic, assign) NSInteger ",\ 27 | "@property (nonatomic, assign) long ",\ 28 | "@property (nonatomic, assign) long long ",\ 29 | "@property (nonatomic, assign) CGFloat ",\ 30 | "@property (nonatomic, assign) double ",\ 31 | "@property (nonatomic, assign) BOOL ",\ 32 | "@property (nonatomic, assign) CGRect ",\ 33 | "@property (nonatomic, assign) CGSize ",\ 34 | "@property (nonatomic, copy) id ",\ 35 | "@property (nonatomic, strong) id ",\ 36 | "@property (nonatomic, weak) id " 37 | ] 38 | 39 | 40 | def inline_model_tablevel(tablevel): 41 | if tablevel is None: 42 | tablevel = tab_level_1 43 | param_name = randomvalue.string_value() 44 | param_value = randomvalue.string_value() 45 | result_string = f'{tablevel}NSString *{param_name} = @\"{param_value}\";\n{tablevel}NSLog(@\"%@\", {param_name});\n' 46 | return result_string 47 | 48 | def if_model(tablevel): 49 | 50 | if tablevel is None: 51 | tablevel = tab_level_1 52 | 53 | param_name = randomvalue.string_value_num(2) 54 | param_value = randomvalue.int_value(0,1000) 55 | param_name_selfid = randomvalue.string_value_num(3) 56 | if_string = f"{tablevel}id {param_name_selfid} = self;\n{tablevel}int {param_name} = [{param_name_selfid} intValue];\n" 57 | 58 | #if的分支数 59 | random_num = randomvalue.int_value(if_num_min,if_num_max) 60 | 61 | if random_num == 1: 62 | inline_string = inline_model_tablevel(tab_level_2) 63 | if_string = f'{if_string}{tablevel}if ({param_name} <= 1000){{\n{inline_string}\t}}\n' 64 | elif random_num == 2: 65 | inline_string1 = inline_model_tablevel(tab_level_2) 66 | inline_string2 = inline_model_tablevel(tab_level_2) 67 | if_string = f'{if_string}{tablevel}if ({param_name} <= 500){{\n{inline_string1}\t}}else{{\n{inline_string2}\t}}\n' 68 | else: 69 | level = 1000/random_num 70 | for num in range(1,random_num+1): 71 | if num == 1: 72 | inline_string = inline_model_tablevel(tab_level_2) 73 | level_num_str = str(level*num) 74 | if_string = f'{if_string}{tablevel}if ({param_name} <= {level_num_str}){{\n{inline_string}\t}}\n' 75 | elif num == random_num: 76 | inline_string = inline_model_tablevel(tab_level_2) 77 | if_string = f'{if_string}{tablevel}else{{\n{inline_string}\t}}\n' 78 | else: 79 | inline_string = inline_model_tablevel(tab_level_2) 80 | level_num_str = str(level*(num-1)) 81 | level_num_str1 = str(level*num) 82 | if_string = f'{if_string}{tablevel}else if({param_name} > {level_num_str} && {param_name} <= {level_num_str1}){{\n{inline_string}\t}}\n' 83 | return f'\n{if_string}\n' 84 | 85 | def switch_model(tablevel): 86 | 87 | if tablevel is None: 88 | tablevel = tab_level_1 89 | 90 | param_name = randomvalue.string_value() 91 | param_value = randomvalue.int_value(switch_num_min,switch_num_max) 92 | param_name_selfid = randomvalue.string_value_num(3) 93 | switch_string = f"{tablevel}id {param_name_selfid} = self;\n{tablevel}int {param_name} = [{param_name_selfid} intValue];\n" 94 | # switch_string = f"{tablevel}int {param_name} = {param_value};\n" 95 | 96 | #switch的分支数 97 | random_num = randomvalue.int_value(switch_num_min,switch_num_max) 98 | randstring1 = randomvalue.string_value() 99 | if random_num == switch_num_min: 100 | inline_string1 = inline_model_tablevel(tab_level_3) 101 | switch_string = f'{switch_string}{tablevel}switch ({param_name}) {{\n{tablevel}{tab_level_1}case 2:{{\n{inline_string1}{tablevel}{tab_level_2}}}break;\n{tablevel}{tab_level_1}default:{{\n{tablevel}{tab_level_2}NSLog(@\"do not catch anything\");\n{tablevel}{tab_level_2}}}break;\n\t}}\n' 102 | else: 103 | for num in range(switch_num_min,random_num+1): 104 | if num == switch_num_min: 105 | inline_string1 = inline_model_tablevel(tab_level_3) 106 | switch_string = f'{switch_string}{tablevel}switch ({param_name}) {{\n{tablevel}{tab_level_1}case 2:{{\n{inline_string1}{tablevel}{tab_level_2}}}break;\n' 107 | elif num == random_num: 108 | switch_string = f'{switch_string}\n{tablevel}{tab_level_1}default:\n{tablevel}{tab_level_2}{{NSLog(@\"do not catch anything\");\n{tablevel}{tab_level_2}}}break;\n\t}}\n' 109 | else: 110 | inline_string1 = inline_model_tablevel(tab_level_3) 111 | num_str = str(num) 112 | switch_string = f'\n{switch_string}\n{tablevel}{tab_level_1}case {num_str}:{{\n{inline_string1}{tablevel}{tab_level_2}}}break;' 113 | return f'\n{switch_string}\n' 114 | 115 | # 自定义函数的调用 116 | def constom_func_call_model(funcjsonstring,tablevel): 117 | funcdic = eval(funcjsonstring) 118 | if funcdic["funcname"] == "": 119 | print("函数名为空") 120 | return 121 | obj_name = randomvalue.string_value() 122 | class_type = funcdic["class_name"] 123 | 124 | func_string = "" 125 | func_string = f'{tab_level_1}{class_type} *{obj_name} = [{class_type} new];\n' 126 | 127 | params_name = [] 128 | for i in range(0,len(funcdic["params"])): 129 | params_name.append(randomvalue.string_value_num(2)) 130 | 131 | param_init_string = "" 132 | for i in range(len(funcdic["params"])): 133 | param_init_string = f'{param_init_string}{tab_level_1}{funcdic["params"][i]} {params_name[i]} = {randomvalue.type_random_value(funcdic["params"][i])};\n' 134 | 135 | 136 | call_string = "" 137 | if len(params_name) == 0: 138 | call_string = f'{tab_level_1}[{obj_name} {funcdic["funcname"]}];\n' 139 | else: 140 | if len(funcdic["descrip"]) == 1: 141 | call_string = f'{tab_level_1}[{obj_name} {funcdic["funcname"]}:{params_name[0]}];\n' 142 | else: 143 | call_string = f'{tab_level_1}[{obj_name} {funcdic["funcname"]}:{params_name[0]} ' 144 | for i in range(1,len(funcdic["descrip"])): 145 | call_string = f'{call_string}{funcdic["descrip"][i]}:{params_name[i]} ' 146 | call_string = f'{call_string}];\n' 147 | 148 | return f'\n{func_string}{param_init_string}{call_string}\n' 149 | 150 | # 系统函数的调用 151 | def system_func_call_model(funcjsonstring,tablevel): 152 | 153 | funcdic = eval(funcjsonstring) 154 | if funcdic["funcname"] == "": 155 | print("函数名为空") 156 | return 157 | class_name = randomvalue.string_value() 158 | class_string = randomvalue.string_value() 159 | 160 | func_string = "" 161 | func_string = f'{tab_level_1}Class {class_name} = NSClassFromString(@\"{class_string}\");\n' 162 | 163 | msg_send_param = "" 164 | param_string = "" 165 | param_descri_string = "" 166 | imp_string = "" 167 | sel_name = randomvalue.string_value() 168 | imp_name = randomvalue.string_value() 169 | if len(funcdic["params"]): 170 | for i in range(len(funcdic["params"])): 171 | param_name = randomvalue.string_value() 172 | param_string = f'{param_string}{tab_level_1}id {param_name};\n' 173 | msg_send_param = f'{msg_send_param},{param_name}' 174 | imp_string = f'{imp_string},id' 175 | if i != 0: 176 | param_descri_string = f'{param_descri_string}:{funcdic["descrip"][i-1]}' 177 | if param_descri_string == "": 178 | param_descri_string = ":" 179 | sel_string = f'{tab_level_1}SEL {sel_name} = @selector({funcdic["funcname"]}{param_descri_string}:);\n' 180 | func_string = f'{func_string}{param_string}{sel_string}' 181 | else: 182 | sel_string = f'{tab_level_1}SEL {sel_name} = @selector({funcdic["funcname"]});\n' 183 | func_string = f'{func_string}{sel_string}' 184 | 185 | # objc_msgSend 的写法 186 | # func_string = f'{func_string}{tab_level_1}objc_msgSend({class_name},{sel_name}{msg_send_param});' 187 | # func_string = str(func_string).replace("::",":") 188 | # performSelector 的写法 189 | # func_string = f'{func_string}{tab_level_1}[{class_name} performSelector:{sel_name} withObject:{msg_send_param}];' 190 | # func_string = str(func_string).replace("::",":").replace(":,",":") 191 | # imp 的写法 192 | imp_init_string = f'IMP {imp_name} = [{class_name} methodForSelector:{sel_name}];' 193 | func_string = f'{func_string}{tab_level_1}{imp_init_string}\n{tab_level_1}((id(*)(id, SEL{imp_string})){imp_name})({class_name},{sel_name}{msg_send_param});' 194 | func_string = str(func_string).replace("::",":") 195 | return f'\n{func_string}\n' 196 | 197 | # 自定义函数的声明 198 | def constom_func_head_model(funcdic): 199 | 200 | func_head_string = "" 201 | func_head_string = f'- (void) {funcdic["funcname"]}:({funcdic["params"][0]}){funcdic["descrip"][0]}' 202 | 203 | descrp_string = "" 204 | for j in range(1,len(funcdic["descrip"])): 205 | descrp_string = f'{descrp_string} {funcdic["descrip"][j]}:({funcdic["params"][j]}){funcdic["descrip"][j]}' 206 | 207 | return f'\n{func_head_string}{descrp_string}' 208 | 209 | # 自定义函数的实现 210 | def func_model(if_model_flag, while_model_flag, switch_model_flag, func_call_string_array, tablevel,func_dic): 211 | 212 | if_string = "" 213 | if if_model_flag == 1: 214 | if_string = if_model(None) 215 | 216 | while_string = "" 217 | if while_model_flag == 1: 218 | while_string = while_model(None) 219 | 220 | switch_string = "" 221 | if switch_model_flag == 1: 222 | switch_string = switch_model(None) 223 | 224 | func_call_string = "" 225 | if len(func_call_string_array): 226 | for item in func_call_string_array: 227 | func_call_string_item = system_func_call_model(str(item).strip('\n'), tablevel) 228 | if func_call_string_item is None: 229 | func_call_string_item = " " 230 | func_call_string = f'{func_call_string}{func_call_string_item}' 231 | 232 | if func_call_string == "": 233 | func_call_string = " " 234 | 235 | func_head_string = constom_func_head_model(func_dic) 236 | 237 | # 每个模块随机乱序 238 | random_sort = randomvalue.int_value(1,4) 239 | if random_sort == 1: 240 | func_create_string = f'{func_head_string}{{\n{if_string}{while_string}{switch_string}{func_call_string}}}' 241 | elif random_sort == 2: 242 | func_create_string = f'{func_head_string}{{\n{while_string}{switch_string}{if_string}{func_call_string}}}' 243 | elif random_sort == 3: 244 | func_create_string = f'{func_head_string}{{\n{func_call_string}{while_string}{if_string}{switch_string}}}' 245 | else: 246 | func_create_string = f'{func_head_string}{{\n{switch_string}{func_call_string}{if_string}{while_string}}}' 247 | 248 | return f'\n{func_create_string}\n' 249 | 250 | def while_model(tablevel): 251 | 252 | if tablevel is None: 253 | tablevel = tab_level_1 254 | inline_string = inline_model_tablevel(tab_level_2) 255 | while_string = f'\n{tablevel}while(1){{\n{inline_string}\n{tablevel}break;\n{tablevel}}}\n' 256 | return while_string 257 | 258 | def property_model(num_min,num_max): 259 | totle = randomvalue.int_value(num_min,num_max) 260 | property_string = "" 261 | for i in range(totle): 262 | index = randomvalue.int_value(0,len(property_list)-1) 263 | property_name = randomvalue.string_value_num(2) 264 | property_string = f'{property_string}{property_list[index]}{property_name};\n' 265 | 266 | return property_string -------------------------------------------------------------------------------- /writecode/config.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | import sys 4 | 5 | # ----------------需要配置的参数---------------- 6 | # 文件夹白名单 7 | # XSDK - 1 8 | # file_while_list = ["Services","LoginRegister"] 9 | # XSDK - 2 10 | # file_while_list = ["Services","SKTLoginRegister"] 11 | # XSDK - 3 12 | file_while_list = ["Services","TFBLoginRegister"] 13 | # XSDK - 4 14 | # file_while_list = ["Services","ViewController"] 15 | # XSDK - 5 16 | # file_while_list = ["Services","ViewController"] 17 | 18 | # 函数、属性的数量最值 19 | m_h_num_min = 5 20 | m_h_num_max = 10 21 | 22 | # -------------------------------------------- 23 | 24 | # 工程路径 25 | confuse_path = f'{os.path.dirname(sys.path[0])}' 26 | confuse_resource_path = f'{confuse_path}/resource' 27 | system_func_path = f'{confuse_resource_path}/func_analysised/uikit_class_func.txt' 28 | random_func_path = f'{confuse_resource_path}/random_func_create.txt' 29 | random_class_name_path = f'{confuse_resource_path}/random_class_name.txt' 30 | ruby_path = f'{confuse_path}/writecode/xcodeprojhelp.rb' 31 | 32 | # 垃圾代码调用开关 33 | call_all_path = "" 34 | call_all_class = "XSDKAllCall" #若设置为空,则默认创建 工程名+AllCall 类作为控制开关 35 | call_func_name = "callString" 36 | 37 | # 全局变量 38 | xcodefile_path = "" 39 | xcodefile_name = "" 40 | xcodefile_project_path = "" 41 | 42 | def set_call_all_path(setvalue): 43 | global call_all_path 44 | call_all_path = setvalue 45 | return call_all_path 46 | 47 | def get_call_all_path(): 48 | global call_all_path 49 | return call_all_path 50 | 51 | def set_xcodefile_path(setvalue): 52 | global xcodefile_path 53 | xcodefile_path = setvalue 54 | return xcodefile_path 55 | 56 | def get_xcodefile_path(): 57 | global xcodefile_path 58 | return xcodefile_path 59 | 60 | def set_xcodefile_name(setvalue): 61 | global xcodefile_name 62 | xcodefile_name = setvalue 63 | return xcodefile_name 64 | 65 | def get_xcodefile_name(): 66 | global xcodefile_name 67 | return xcodefile_name 68 | 69 | def set_xcodefile_project_path(setvalue): 70 | global xcodefile_project_path 71 | xcodefile_project_path = setvalue 72 | return xcodefile_project_path 73 | 74 | def get_xcodefile_project_path(): 75 | global xcodefile_project_path 76 | return xcodefile_project_path -------------------------------------------------------------------------------- /writecode/filemanager.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import sys 3 | import os 4 | import randomvalue 5 | import re 6 | import json 7 | 8 | file_type_pool = ["UIViewController","NSObject","UIView","UICollectionViewCell","UICollectionViewController","UITableViewCell","UITableViewController"] 9 | file_name_pool = ["ViewController","Obj","View","CollectionViewCell","CollectionController","Cell","TableViewController"] 10 | 11 | def create_h_m(outpath,name): 12 | 13 | super_class = "NSObject" 14 | if name is None: 15 | index = randomvalue.int_value(0,len(file_type_pool)-1) 16 | world = randomvalue.string_value() 17 | name = f'{world}{file_name_pool[index]}' 18 | super_class = f'{file_type_pool[index]}' 19 | 20 | newfile_h = open(f'{outpath}/{name}.h','w') 21 | h_string = f'#import \nNS_ASSUME_NONNULL_BEGIN\n\n@interface {name} : {super_class}\n\n@end\n\nNS_ASSUME_NONNULL_END' 22 | newfile_h.write(h_string) 23 | newfile_h.close() 24 | 25 | newfile_m = open(f'{outpath}/{name}.m','w') 26 | m_string = f'#import \"{name}.h\"\n#import \n@implementation {name}\n\n@end' 27 | newfile_m.write(m_string) 28 | newfile_m.close() 29 | print(f'生成类:{name}') 30 | 31 | path_dir = {"m_path":f'{outpath}/{name}.m',"h_path":f'{outpath}/{name}.h',"class_name":f'{name}'} 32 | 33 | 34 | return path_dir 35 | 36 | def find_key_line(filepath,keyworld): 37 | for count,line in enumerate(open(filepath,'r')): 38 | if keyworld in line and line.find(f'//{keyworld}') == -1: 39 | return count 40 | 41 | def get_white_file(filepath,whitelist): 42 | resultlist = [] 43 | dirlist = [] 44 | for root, dirs, files in os.walk(filepath): 45 | for dir in dirs: 46 | if dir in whitelist: 47 | dirlist.append(os.path.join(root,dir)) 48 | for dir in dirlist: 49 | for root, dirs, files in os.walk(dir): 50 | for dd in files: 51 | resultlist.append(os.path.join(root,dd)) 52 | return set(resultlist) 53 | 54 | def write_string(filepath,string,line_num): 55 | 56 | if line_num is None: 57 | line_num = 0 58 | if os.path.splitext(filepath)[-1] == '.h': 59 | line_num = 5 60 | else: 61 | line_num = 4 62 | 63 | lines=[] 64 | writefile = open(filepath,'r') 65 | for line in writefile: 66 | lines.append(line) 67 | writefile.close() 68 | 69 | lines.insert(line_num,string) 70 | s = "".join('%s' %id for id in lines) 71 | writefile = open(filepath,'w+') 72 | writefile.write(s) 73 | writefile.close() 74 | del lines[:] 75 | -------------------------------------------------------------------------------- /writecode/randomvalue.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import random 3 | import sys 4 | import re 5 | import json 6 | import string 7 | import os 8 | 9 | # 当前脚本工程的路径 10 | confuse_path = f'{os.path.dirname(sys.path[0])}' 11 | worlds_path = f"{confuse_path}/resource/words.txt" 12 | ios_worlds_path = f"{confuse_path}/resource/ioswords.txt" 13 | 14 | params_type_pool = ["int","float","void *","double","long long","bool","char"] 15 | 16 | wfile = open(worlds_path,'r') 17 | wstring = str(wfile.read()) 18 | worlds_arr = wstring.split(' ') 19 | wfile.close() 20 | 21 | iosfile = open(ios_worlds_path,'r') 22 | iosstring = str(iosfile.read()) 23 | iosworlds_arr = iosstring.split(' ') 24 | iosfile.close() 25 | 26 | def type_value(): 27 | index = random.randint(0,len(params_type_pool)-1) 28 | return params_type_pool[index] 29 | 30 | def type_random_value(typevalue): 31 | if typevalue == "int" or typevalue == "float" or typevalue == "double" or typevalue == "long long": 32 | return int_value(1,1000) 33 | elif typevalue == "char": 34 | return f'\'{chr(random.randint(97, 122))}\'' 35 | elif typevalue == "bool": 36 | return "YES" 37 | else: 38 | return "NULL" 39 | 40 | def int_value(minv,maxv): 41 | return random.randint(minv,maxv) 42 | 43 | def string_value(): 44 | random_index = random.randint(0,len(worlds_arr)-1) 45 | random_world = worlds_arr[random_index] 46 | if random_world is None or random_world == "": 47 | string_value() 48 | else: 49 | return random_world 50 | 51 | def string_ios_value(): 52 | random_index = random.randint(0,len(iosworlds_arr)-1) 53 | random_world = iosworlds_arr[random_index] 54 | if random_world is None or random_world == "": 55 | string_value() 56 | else: 57 | return random_world 58 | 59 | def string_value_num(num): 60 | random_world = "" 61 | for item in range(0,num): 62 | random_index = random.randint(0,len(worlds_arr)-1) 63 | world_tmp = worlds_arr[random_index] 64 | if world_tmp is None or world_tmp == "": 65 | random_world = "" 66 | break 67 | random_world = random_world + world_tmp 68 | if random_world is None or random_world == "": 69 | string_value_num(num) 70 | else: 71 | return random_world 72 | 73 | def func_create(random_func_path, func_name_num,class_name,writeflag): 74 | func_dic = {} 75 | func_dic["params"] = [] 76 | func_dic["descrip"] = [] 77 | func_dic["class_name"] = class_name 78 | params_num = int_value(1,5) 79 | for k in range(0,params_num): 80 | func_dic["params"].append(type_value()) 81 | func_dic["descrip"].append(string_value()) 82 | func_dic["returntype"] = "void" 83 | # 这是之前的写法,使用三个随机的单词组成函数名 84 | # func_dic["funcname"] = stringvalue_num(func_name_num) 85 | func_dic["funcname"] = f'{string_value()}{string_ios_value()}' 86 | 87 | if writeflag == 1: 88 | jsonfile = open(random_func_path,'a+') 89 | jsonfile.writelines(json.dumps(func_dic)+'\n') 90 | jsonfile.close() 91 | 92 | return func_dic 93 | 94 | def half_probability(): 95 | intnum = random.randint(1,2) 96 | if intnum == 1: 97 | return 1 98 | else: 99 | return 2 -------------------------------------------------------------------------------- /writecode/writecontrol.py: -------------------------------------------------------------------------------- 1 | # Created by Animenzzz on 19/7/12. 2 | # Copyright (c) 2019年 Animenzzz. All rights reserved. 3 | 4 | # 此脚本,README有详细说明 5 | 6 | # -*- coding: utf-8 -*- 7 | import codemodel 8 | import os 9 | import linecache 10 | import randomvalue 11 | import filemanager 12 | import subprocess 13 | import sys 14 | import datetime 15 | import config 16 | 17 | OPTION = """---------------- 18 | 新建垃圾文件个数: 19 | 输入 个数 20 | 0 不新建 21 | 1 10-20 22 | 2 20-30 23 | 3 30-40 24 | ---------------- 25 | """ 26 | 27 | def main(argv): 28 | print("当前功能模块:【写入垃圾代码】") 29 | print(f'\n当前文件夹白名单:{config.file_while_list}') 30 | file_level = input(f'{OPTION}') 31 | file_num = randomvalue.int_value((int(file_level)*10),(int(file_level)*10+10)) 32 | property_flag = input(f"是否添加属性(是:y 默认:否)\n") 33 | white_write_flag = input(f"是否在白名单文件夹写入垃圾代码(是:y 默认:否)\n") 34 | 35 | while True: 36 | inpustring = input("工程文件路径\n") 37 | config.set_xcodefile_path(str(inpustring).strip()) 38 | if os.path.exists(config.get_xcodefile_path()) == True: 39 | break 40 | else: 41 | print("文件不存在,请重新输入") 42 | 43 | config.set_xcodefile_name(os.path.basename(config.get_xcodefile_path())) 44 | config.set_xcodefile_project_path(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}.xcodeproj') 45 | if config.call_all_class == "": 46 | config.set_call_all_path(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}') 47 | else: 48 | config.set_call_all_path(f'{config.get_xcodefile_path()}/HX') 49 | 50 | starttime = datetime.datetime.now() 51 | 52 | if white_write_flag == 'y' or white_write_flag == 'Y': 53 | writewhite(config.get_xcodefile_path(),config.file_while_list) 54 | 55 | if file_level != '0': 56 | newlajifile(file_num) 57 | creatswitch(property_flag) 58 | 59 | endtime = datetime.datetime.now() 60 | print (f'耗时:{(endtime - starttime).seconds}秒') 61 | 62 | def writewhite(filepath,whitelist): 63 | write_file_list = filemanager.get_white_file(filepath,whitelist) 64 | for file_item in write_file_list: 65 | if os.path.splitext(file_item)[-1] == '.h': 66 | end_num = filemanager.find_key_line(file_item,"@interface") 67 | filemanager.write_string(file_item,codemodel.property_model(config.m_h_num_min,config.m_h_num_max),line_num=(int(end_num)+1)) 68 | if os.path.splitext(file_item)[-1] == '.m': 69 | end_num = filemanager.find_key_line(file_item,"@implementation") 70 | randomint = randomvalue.int_value(config.m_h_num_min,config.m_h_num_max) 71 | for funcnum in range(randomint): 72 | func_dic = randomvalue.func_create(config.random_func_path,3,None,None) 73 | filemanager.write_string(file_item,codemodel.func_model(1,1,1,[],1,func_dic),line_num=(int(end_num)+1)) 74 | 75 | def newlajifile(lajifilenum): 76 | 77 | system_funcfile = open(config.system_func_path,'r') 78 | system_func_lengh = len(system_funcfile.readlines()) 79 | system_funcfile.close() 80 | 81 | if os.path.exists(config.random_func_path): 82 | os.remove(config.random_func_path) 83 | 84 | if os.path.exists(config.random_class_name_path): 85 | os.remove(config.random_class_name_path) 86 | 87 | print(f'新建的文件个数:{str(lajifilenum)}') 88 | for index in range(0,lajifilenum): 89 | new_file_dic = filemanager.create_h_m(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}',name=None) 90 | h_file = new_file_dic["h_path"] 91 | m_file = new_file_dic["m_path"] 92 | class_name = new_file_dic["class_name"] 93 | 94 | 95 | # 在project添加引用 96 | subprocess.call(f'ruby {config.ruby_path} {config.get_xcodefile_project_path()} {config.get_xcodefile_name()} {class_name} {config.get_xcodefile_path()}/{config.get_xcodefile_name()}/',shell=True) 97 | 98 | classfile = open(config.random_class_name_path,'a+') 99 | classfile.writelines(f'{class_name}\n') 100 | classfile.close() 101 | 102 | # 函数个数 103 | func_num = randomvalue.int_value(config.m_h_num_min,config.m_h_num_max) 104 | 105 | for ii in range(1,func_num): 106 | func_arr = [] 107 | # 获取系统方法的字符串 108 | for i in range(1,3): 109 | random_row = randomvalue.int_value(1,system_func_lengh) 110 | random_line = linecache.getline(config.system_func_path, random_row) 111 | func_arr.append(random_line) 112 | # 创建随机函数并且写入txt文件,函数信息,包括返回类型、参数等 113 | func_dic = randomvalue.func_create(config.random_func_path,3,class_name,1) 114 | # 函数声明(写进.h中) 115 | func_head_string = f'{codemodel.constom_func_head_model(func_dic)};' 116 | filemanager.write_string(h_file,f'{func_head_string}\n',line_num=None) 117 | # 函数实现(写进.m中) 118 | if_model_flag = randomvalue.half_probability() 119 | while_model_flag = randomvalue.half_probability() 120 | switch_model_flag = randomvalue.half_probability() 121 | funcwrite_string = codemodel.func_model(if_model_flag,while_model_flag,switch_model_flag,func_arr,1,func_dic) 122 | filemanager.write_string(m_file,funcwrite_string,line_num=None) 123 | 124 | def creatswitch(propertyflag): 125 | # 调用所有垃圾方法的开关 126 | print("\n创建控制开关") 127 | # 方法实现 128 | if config.call_all_class == "": 129 | call_all_name = f"{config.get_xcodefile_name()}AllCall" 130 | filemanager.create_h_m(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}',f'{call_all_name}') 131 | subprocess.call(f'ruby {config.ruby_path} {config.get_xcodefile_project_path()} {config.get_xcodefile_name()} {call_all_name} {config.get_xcodefile_path()}/{config.get_xcodefile_name()}/',shell=True) 132 | filemanager.write_string(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}/{call_all_name}.m',f"- (void){config.call_func_name}{{\n\n\n\n\n\n}}\n",line_num=None) 133 | else: 134 | call_all_name = f"{config.call_all_class}" 135 | random_func_file = open(config.random_func_path) 136 | for line in random_func_file: 137 | call_string = codemodel.constom_func_call_model(line,1) 138 | funcdic = eval(line) 139 | if randomvalue.half_probability() == 1: 140 | if config.call_all_class == "": 141 | filemanager.write_string(f'{config.get_call_all_path()}/{call_all_name}.m',call_string,line_num=7) 142 | else: 143 | line_num = filemanager.find_key_line(f'{config.get_call_all_path()}/{call_all_name}.m',f'{config.call_func_name}') 144 | filemanager.write_string(f'{config.get_call_all_path()}/{call_all_name}.m',call_string,line_num+1) 145 | 146 | # 方法导入 147 | total = 4 148 | random_classfunc_file = open(config.random_class_name_path,"r") 149 | for num,value in enumerate(random_classfunc_file): 150 | total = total+1 151 | name = str(value).replace('\n','') 152 | line_num = 0 153 | if config.call_all_class == "": 154 | line_num = 1 155 | else: 156 | line_num = 8 157 | filemanager.write_string(f'{config.get_call_all_path()}/{call_all_name}.h',f'#import \"{name}.h\"\n' ,line_num=line_num) 158 | if propertyflag == 'y' or propertyflag == 'Y': 159 | filemanager.write_string(f'{config.get_xcodefile_path()}/{config.get_xcodefile_name()}/{name}.h',codemodel.property_model(config.m_h_num_min,config.m_h_num_max),line_num=None) 160 | 161 | random_classfunc_file.close() 162 | if config.call_all_class == "": 163 | filemanager.write_string(f'{config.get_call_all_path()}/{call_all_name}.h',f"\n- (void){config.call_func_name};\n",line_num=total) 164 | print(f'\n垃圾代码的调用在:{call_all_name}.h ...是否开关自行调用') 165 | 166 | if __name__ == '__main__': 167 | main(sys.argv[1:]) -------------------------------------------------------------------------------- /writecode/xcodeprojhelp.rb: -------------------------------------------------------------------------------- 1 | require 'xcodeproj' 2 | 3 | def addreferences(projpath,projname,filename,filepath) 4 | 5 | project = Xcodeproj::Project.open(projpath) 6 | 7 | targetIndex = 0 8 | targetIndex_clean = 0 9 | 10 | project.targets.each_with_index do |target, index| 11 | if target.name == projname 12 | targetIndex = index 13 | end 14 | 15 | if target.name == projname + "_CLEAN" 16 | targetIndex_clean = index 17 | end 18 | end 19 | 20 | target = project.targets[targetIndex] 21 | target_clean = project.targets[targetIndex_clean] 22 | 23 | #找到要插入的group (参数中true表示如果找不到group,就创建一个group) 24 | group = project.main_group.find_subpath(File.join(projname),true) 25 | 26 | #set一下sorce_tree 27 | group.set_source_tree('SOURCE_ROOT') 28 | 29 | #向group中增加文件引用(.h文件只需引用一下,.m引用后还需add一下) 30 | h_path = filepath+filename+".h" 31 | file_ref = group.new_reference(h_path) 32 | 33 | m_path = filepath+filename+".m" 34 | file_ref = group.new_reference(m_path) 35 | target.add_file_references([file_ref]) 36 | target_clean.add_file_references([file_ref]) 37 | project.save 38 | end 39 | 40 | addreferences(ARGV[0],ARGV[1],ARGV[2],ARGV[3]) --------------------------------------------------------------------------------