比如有第 1 个页面 ViewControllerA 和第 2 个页面 ViewControllerB 。 当从第 1 个页面向第 2 个页面传值时可以使用 Property 的方法,但是当从第 2 个页面向第 1 个页面传值时可以使用同样的 Property 方法吗?
1
timelessg 2016-10-05 23:33:26 +08:00 via Android
delegate & block & target-action
|
2
LINAICAI 2016-10-06 00:29:25 +08:00
可以啊,但这样就必须传递一个引用的 vc 给第二个 vc 了,然后在 vc 的生命周期的某个时刻传递回来,但更好的方法就是用 block 和 delegate ,这样 vc 之间耦合降到最低,还能更好的处理相互引用的问题,如果用属性来传递,很容易相互之间的控制器一不小心就相互引用而得不到释放,而 block 和 delegate 就是用副本对象和弱引用来处理的。
|
3
kitalphaj 2016-10-06 07:34:54 +08:00
再加一个 notification ,如果你需要支持多 publisher 多 subscriber 的话
|
4
iyeatse 2016-10-06 07:40:04 +08:00 via iPhone
unwind segue
|
5
zongren 2016-10-06 08:59:33 +08:00 via Android
不可以啊,就用 delegate 和 block
|
6
z0z OP @timelessg 多谢啊, delegate 的方法刚会使用, block 和 target-action 正在开始学习。
@LINAICAI 我靠啊,你这几句话解决了困扰我好几天的疑问,虽然还不能完全看懂,但是恍惚能理解一点,我再研究研究。之前我使用 Property 做完 forward 的传数据之后,又如法炮制的加了一些代码企图使用 Property 实现 backward 的传数据,但是编译的时候就没有通过,提示我在 ViewControllerA 中 interface 中定义的那个变量需要使用__weak 来修饰来着,我一看就蒙了,这个技能没听说过啊。 多谢了啊。 @kitalphaj 你说的这个我得收藏了,对我来说看起来像是高级的应用,等我掌握了基本应用后再去了解,谢谢啊。 @iyeatse 之前搜到了这个关键字,但是当时没有仔细看,既然你推荐了,回头我也得仔细的看看,多谢啦。 @zongren 是啊,我现在只会用 delegate 来 backward 的传输数据,昨晚上刚刚开始了解 block ,当时只是不知道为什么不能使用 Property 来做 backward 的传数据。 |
7
coolmenu 2016-10-06 09:57:48 +08:00
weak 是弱引用,防止两个 vc 相互引用而不能销毁。
|
8
hstdt 2016-10-06 11:37:41 +08:00 via iPhone
建议搜索 ios 传值方式,那种专门的汇总博文会好些。入门就一个个学着用,用多了才知道在什么时候用什么方式传最好。
|
9
timelessg 2016-10-06 12:56:33 +08:00 via Android
建议找个完整项目找找感觉, oc 可以看 coding , swift 可以看 yep 。
|
10
xi_lin 2016-10-06 14:25:42 +08:00 via iPhone
block 注意循环引用
|
11
z0z OP 你們樓上的都是好人。
|
12
xjbeta 2016-10-06 16:54:54 +08:00
我习惯用 notification 数量多的话 试试 rxswift 之类的(想试试但还没试过)
|