文档方法名混淆

方法名混淆

预计阅读时间:10 分钟

什么是方法名混淆?

方法名混淆将有意义的方法名(如 loginWithUsername:password:)替换为无意义的随机字符串, 隐藏代码的业务逻辑。

混淆前
- (void)loginWithUsername:(NSString *)username password:(NSString *)password;
- (void)processPayment:(double)amount;
- (BOOL)validateUserInput:(NSString *)input;
混淆后
- (void)zfj_4nM9k:(NSString *)zfj_8xK2m zfj_3pL7j:(NSString *)zfj_9mN4x;
- (void)zfj_6kX9m:(double)zfj_2nP8k;
- (BOOL)zfj_5jM3n:(NSString *)zfj_7xK9p;

自动排除的方法

以下方法会自动排除,无需手动配置白名单:

生命周期方法

  • • init / dealloc
  • • viewDidLoad
  • • viewWillAppear:
  • • viewDidAppear:

委托方法

  • • tableView:cellForRowAt:
  • • collectionView:...
  • • scrollViewDidScroll:

系统方法

  • • description
  • • isEqual:
  • • hash
  • • copy / mutableCopy

配置选项

启用方法名混淆

obfuscateMethod: true

方法白名单

whitelist.methods

混淆参数名

obfuscateParameter: true

注意事项

  • 使用 @selector() 的方法需要加入白名单
  • KVO 观察的属性对应的 setter/getter 需要排除
  • IBAction 方法会自动更新 Storyboard 引用