ios混淆方法名生成器

有待整理,下记录一下。

#import <Foundation/Foundation.h>

@interface DJRandomMethodName : NSObject

/** 随机一个实例方法名*/
+ (NSString *)randomMethodName;
/** 随机一个类方法名*/
+ (NSString *)randomClassName;



@end

//
//  DJRandomMethodName.m
//  Test0801
//
//  Created by 曹敬贺 on 16/8/1.
//  Copyright © 2016年 北京无限点乐科技有限公司. All rights reserved.
//

#import "DJRandomMethodName.h"


typedef enum
{
    DJClassName,
    DJMethodName
}DJNameType;

@interface DJRandomMethodName ()
//内存中缓存数组
@property (nonatomic, strong) NSMutableArray * memoryArray;
//随机生成的名字组成的数组
@property (nonatomic, strong) NSMutableArray * namesArray;

@end


static dispatch_once_t dj_predicate;
static DJRandomMethodName * manager = nil;
@implementation DJRandomMethodName

#pragma mark - singleShare
+ (DJRandomMethodName *)share
{
    dispatch_once(&dj_predicate, ^{
        manager = [super allocWithZone:NULL];
        manager.memoryArray = [[NSMutableArray alloc]initWithArray:[manager getWordFromFile:[manager getFilePath]]];
        manager.namesArray = [NSMutableArray array];
    });
    return manager;
}
- (id)copy
{
    return [DJRandomMethodName share];
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    return [DJRandomMethodName share];
}
#pragma mark - Methods
- (NSString *)getFilePath
{
    NSString * filePath = [[NSBundle mainBundle]pathForResource:@"CET4" ofType:nil];
    return filePath;
}
- (NSArray *)getWordFromFile:(NSString *)file
{
    NSError * error = nil;
    NSString * articleText = [NSString stringWithContentsOfFile:file encoding:NSUTF8StringEncoding error:&error];
    if (error) {
        return nil;
    }else
    {
        NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@" \n"];
        NSArray * wordsArray = [articleText componentsSeparatedByCharactersInSet:set];
        return wordsArray;
    }
}

/** 用来随机生成一个合规字符串*/
- (NSString *)randomNameWithWordsMin:(NSInteger)min Max:(NSInteger)max WithType:(DJNameType)type
{
    NSMutableString * methodName = [[NSMutableString alloc]initWithString:@""];
    NSInteger wordCount = rand()%max + min;
    switch (type) {
        case DJClassName:
                for (int i = 0; i < wordCount; i++) {
                    int wordIndex = arc4random() % self.memoryArray.count;
                    [methodName appendFormat:@"%@",[self.memoryArray[wordIndex] capitalizedString]];
                }
            break;
        case DJMethodName:
                for (int i = 0; i < wordCount; i++) {
                    int wordIndex = arc4random() % self.memoryArray.count;
                    if (i == 0) {
                        [methodName appendFormat:@"%@",[self.memoryArray[wordIndex] lowercaseString]];
                    }else
                    {
                        [methodName appendFormat:@"%@",[self.memoryArray[wordIndex] capitalizedString]];
                    }
                }
            break;
        default:
            break;
    }
    return methodName;
}

+ (NSString *)randomMethodName
{
    DJRandomMethodName * myDj = [DJRandomMethodName share];
    NSString * name;
    do {
        name = [myDj randomNameWithWordsMin:2 Max:4 WithType:DJMethodName];
        if (![myDj.namesArray containsObject:name]) {
            break;
        }
    } while (1);
    return name;
}

+ (NSString *)randomClassName
{
    DJRandomMethodName * myDj = [DJRandomMethodName share];
    NSString * name;
    do {
        name = [myDj randomNameWithWordsMin:1 Max:3 WithType:DJClassName];
        if (![myDj.namesArray containsObject:name]) {
            break;
        }
    } while (1);
    return name;
}


@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值