ViewController 之间可以使用属性进行逆向传值吗? - V2EX {"@context": "https://schema.org", "itemListElement": [{"position": 1, "@type": "ListItem", "item": "go/ios", "name": "iOS"}, {"position": 2, "@type": "ListItem", "item": "t/310748", "name": "ViewController 之间可以使用属性进行逆向传值吗?"}], "@type": "BreadcrumbList"}
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
z0z
V2EX    iOS

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

  •  
  •   z0z 2016 年 10 月 5 日 2553 次点击
    这是一个创建于 3488 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2016-10-06 18:07:52 +08:00
    timelessg
        1
    timelessg  
       2016 年 10 月 5 日 via Android
    delegate & block & target-action
    LINAICAI
        2
    LINAICAI  
       2016 年 10 月 6 日
    可以啊,但这样就必须传递一个引用的 vc 给第二个 vc 了,然后在 vc 的生命周期的某个时刻传递回来,但更好的方法就是用 block 和 delegate ,这样 vc 之间耦合降到最低,还能更好的处理相互引用的问题,如果用属性来传递,很容易相互之间的控制器一不小心就相互引用而得不到释放,而 block 和 delegate 就是用副本对象和弱引用来处理的。
    kitalphaj
        3
    kitalphaj  
       2016 年 10 月 6 日
    再加一个 notification ,如果你需要支持多 publisher 多 subscriber 的话
    iyeatse
        4
    iyeatse  
       2016 年 10 月 6 日 via iPhone
    unwind segue
    zongren
        5
    zongren  
       2016 年 10 月 6 日 via Android
    不可以啊,就用 delegate 和 block
    z0z
        6
    z0z  
    OP
       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
        7
    coolmenu  
       2016 年 10 月 6 日
    weak 是弱引用,防止两个 vc 相互引用而不能销毁。
    hstdt
        8
    hstdt  
       2016 年 10 月 6 日 via iPhone
    建议搜索 ios 传值方式,那种专门的汇总博文会好些。入门就一个个学着用,用多了才知道在什么时候用什么方式传最好。
    timelessg
        9
    timelessg  
       2016 年 10 月 6 日 via Android
    建议找个完整项目找找感觉, oc 可以看 coding , swift 可以看 yep 。
    xi_lin
        10
    xi_lin  
       2016 年 10 月 6 日 via iPhone
    block 注意循环引用
    z0z
        11
    z0z  
    OP
       2016 年 10 月 6 日
    你上的都是好人。
    xjbeta
        12
    xjbeta  
       2016 年 10 月 6 日
    我习惯用 notification 数量多的话 试试 rxswift 之类的(想试试但还没试过)
    z0z
        13
    z0z  
    OP
       2016 年 10 月 6 日
    @xjbeta 我一个一个的试试,不过目前只会 oc ,还不会 swift
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     878 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 55ms UTC 21:26 PVG 05:26 LAX 14:26 JFK 17:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86