知识卡片
正向反向传值的方式选择
内容
两个界面之间的数据流动分两个方向:正向传值(前一个界面把数据传给即将打开的界面)用属性 赋值或自定义构造方法就能直接完成,因为发起方本来就持有目标界面的实例;反向传值(后一个 界面把数据带回给前一个界面)更麻烦,因为发起返回操作的是后一个界面,它并不天然持有前一个 界面的引用,通常靠[[协议是只声明不实现的契约|协议]]代理或闭包来搭桥——协议方式结构清晰、 职责分明但要多写一层声明,闭包方式代码量更少但把两个界面的逻辑耦合得更紧、可读性较差。 发散:这组取舍的本质是”谁持有谁”决定了数据能不能直接传递——正向传值顺着对象创建的方向走 所以简单,反向传值要逆着这个方向走,就必须借助一个提前约定好的回调机制。
参考来源
《Swift 4从零到精通iOS开发》第15章《视图控制器与高级UI视图控件》