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

2016-10-05 23:07:55 +08:00
 z0z

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

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

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

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

https://www.v2ex.com/t/310748

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

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

© 2021 V2EX