iOS解耦心得---B类修改A类中变量的另一种方法


需求描述

最近开发遇到这么一个需求,我们项目架构采用MVVM的变种模式,什么鬼?简单来说,在Model类和Controller类之间分离出专门处理数据逻辑的DataController层,假设A是我们的Controller层,B是DataController层.需求就是在B类中实现修改A类中的全局变量,实现方法有很多,下面的方法是我认为最elegant(zhuangbi)的
伪代码如下:

1
2
3
4
5
6
7
8
9
10
A:
{
Var *globalVar//全局变量
}
B *b = [B new];//实例化出b对象
Var* c_globalVar = globalVar;//将全局变量转成局部变量
[b showMeTheCode:&c_globalVar];
globalVar = c_globalVar;
NSLog(@“%@”,globalVar);
1
2
B.h:
-(void)showMeTheCode:(Var **)c_pointer_addr;
1
2
3
4
5
B.m:
-(void)showMeTheCode:(Var **)c_pointer_addr{
*c_pointer_addr = new_c;//将修改有的new_c赋值给全局变量
}

运行后,会发现globalVar的值已经在B类中修改了。


stackoverflow有一个回复可以参考🔗

什么情况下会遇到这种问题:

我是在给类解耦的时候用到的,业务代码分离过程中,为了保证相互不影响,尽量少的粘连,可以采用此方法来实现

显示评论