GCD应用
面试题1:使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
示例代码:
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, globalQueue, ^{
NSLog(@"001");
});
dispatch_group_async(group, globalQueue, ^{
NSLog(@"002");
});
dispatch_group_async(group, globalQueue, ^{
NSLog(@"003");
});
dispatch_group_notify(group, globalQueue, ^{
NSLog(@"004");
});
打印信息:
如有疑问,欢迎留言。
面试题2:如何防止反编译?
1.本地数据加密
对NSUserDefaults、sqlite存储问价加密,保护账号和关键信息。
2.URL编码加密
防止URL被静态解析
3.网络传输数据加密
防止被拦截
4.方法体、方法名高级混淆
保证源码被逆向后无法解析代码
5.程序结构混排加密
对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。
6.借助第三方APP加固,例如:网易云易盾