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

777 阅读1分钟
原文链接: hepinglaosan.github.io

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

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

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

stackoverflow有一个回复可以参考🔗

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

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