ViewController 之间可以使用属性进行逆向传值吗?

2016 年 10 月 5 日
 z0z

比如有第 1 个页面 ViewControllerA 和第 2 个页面 ViewControllerB 。 当从第 1 个页面向第 2 个页面传值时可以使用 Property 的方法,但是当从第 2 个页面向第 1 个页面传值时可以使用同样的 Property 方法吗?

2646 次点击
所在节点    iOS
13 条回复
timelessg
2016 年 10 月 5 日
delegate & block & target-action
LINAICAI
2016 年 10 月 6 日
可以啊,但这样就必须传递一个引用的 vc 给第二个 vc 了,然后在 vc 的生命周期的某个时刻传递回来,但更好的方法就是用 block 和 delegate ,这样 vc 之间耦合降到最低,还能更好的处理相互引用的问题,如果用属性来传递,很容易相互之间的控制器一不小心就相互引用而得不到释放,而 block 和 delegate 就是用副本对象和弱引用来处理的。
kitalphaj
2016 年 10 月 6 日
再加一个 notification ,如果你需要支持多 publisher 多 subscriber 的话
iyeatse
2016 年 10 月 6 日
unwind segue
zongren
2016 年 10 月 6 日
不可以啊,就用 delegate 和 block
z0z
2016 年 10 月 6 日
@timelessg 多谢啊, delegate 的方法刚会使用, block 和 target-action 正在开始学习。
@LINAICAI 我靠啊,你这几句话解决了困扰我好几天的疑问,虽然还不能完全看懂,但是恍惚能理解一点,我再研究研究。之前我使用 Property 做完 forward 的传数据之后,又如法炮制的加了一些代码企图使用 Property 实现 backward 的传数据,但是编译的时候就没有通过,提示我在 ViewControllerA 中 interface 中定义的那个变量需要使用__weak 来修饰来着,我一看就蒙了,这个技能没听说过啊。
多谢了啊。

@kitalphaj 你说的这个我得收藏了,对我来说看起来像是高级的应用,等我掌握了基本应用后再去了解,谢谢啊。
@iyeatse 之前搜到了这个关键字,但是当时没有仔细看,既然你推荐了,回头我也得仔细的看看,多谢啦。
@zongren 是啊,我现在只会用 delegate 来 backward 的传输数据,昨晚上刚刚开始了解 block ,当时只是不知道为什么不能使用 Property 来做 backward 的传数据。
coolmenu
2016 年 10 月 6 日
weak 是弱引用,防止两个 vc 相互引用而不能销毁。
hstdt
2016 年 10 月 6 日
建议搜索 ios 传值方式,那种专门的汇总博文会好些。入门就一个个学着用,用多了才知道在什么时候用什么方式传最好。
timelessg
2016 年 10 月 6 日
建议找个完整项目找找感觉, oc 可以看 coding , swift 可以看 yep 。
xi_lin
2016 年 10 月 6 日
block 注意循环引用
z0z
2016 年 10 月 6 日
你們樓上的都是好人。
xjbeta
2016 年 10 月 6 日
我习惯用 notification 数量多的话 试试 rxswift 之类的(想试试但还没试过)
z0z
2016 年 10 月 6 日
@xjbeta 我一个一个的试试,不过目前只会 oc ,还不会 swift

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/310748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX