(ios) 相求一个资料:IOS中各种传值方法的优缺点:我特别想知道属性传值与代理传值、通知、块传值的优缺点?

相求一个资料:IOS中各种传值方法的优缺点:我特别想知道属性传值与代理传值、通知、块传值的优缺点?

目前小弟只会代理和属性,但是就这两种也不知道有啥不同,小弟为小白求赐教~~搜索了很多也没有没有详尽的资料如果您有麻烦指导下。

1、属性最直接,两个对象可以直接接触的,比如一个UIViewControllerA里构建一个UIImageView,给UIImageView提供图片。
2、代理的环境一般是:A操作B,然后B没有马上返回结果,等待条件满足是B回来通知A.常见的是网络请求,特点是它有一个回来的动作。
3、block在行为上和delegate类似,也是用于回调的。但是(1)block写起来爽一点,比如弹框,弹出框后点击事件回调,我构建一个alertView,马上接着就可以写它的回调alertView.clickBlock = xxx,而delegate我还要再建一个方法 (2)block会copy它内部的对象,这个会有很好的隔离作用,比如A是一个通用的单例,B->A->C,然后C处理完回调B,E->A->F,然后F处理完回调E,假如是delegate,C回调到A之后,A是回调给B还是E呢?A不知道。但block会copy对象,B创建block的时候把自己copy进去,C得到的回调对象就是B。这一点有点难理解。
4、通知相对前两者就是:(1)一对多,一个通知发出去,所有的接收者都有反应,而且是同步的。 (2)发出者和接受者之间没有直接的关联,特别是在复杂的项目里,两个对象无法互相接触的时候,用通知可以发消息,就是容易乱。比如登录成功了,要更新数据,可能很多地方,而登录模块是专注于登录,登录成功后该做哪些不应该由它来管理,所以用通知比较好。当然,项目尽量少交叉交互吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注