通知&代理】的更多相关文章

通知 :   “一对多”,”多对一” 传值 四个步骤:  1.发送通知2.创建监听者3.接收通知4.移除监听者 使用场景:1- 很多控制器都需要知道一个事件,应该用通知:2 - 相隔多层的两个控制器之间跳转 注意事项:  1, 一旦接收消息的对象多了,就难以控制了,可能有你不希望的对象接受了消息并做了处理 2,创建了观察者,在dealloc里面一定要移除: ————————————————————————————————————————————————————————————— 代理 “一对一”…
通知:多对多的关系,比较耗性能 使用: 1.观察者到通知中心注册(接受那个发布者发布的什么通知,监听到通知后的处理方法)  [[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(keyBoardShow:) name:UIKeyboardDidShowNotification object:nil]; 2.移除观察者 [[NSNotificationCenter defaultCenter] remove…
1.从源头上理解和区别block和delegate delegate运行成本低,block的运行成本高. block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除.delegate只是保存了一个对象指针,直接回调,没有额外消耗.就像C的函数指针,只多做了一个查表动作. 2.从使用场景区别block和delegate 有多个相关方法.假如每个方法都设置一个 block, 这样会更麻烦.而 delegate 让多个方法分成一组,只需要设置一次,…
什么时候用通知,什么时候用代理,什么时候用block 通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了 代理 : 父子关系,监听的方法较多的时候使用 block : 父子关系,监听的方法较少的时候使用 Swift中的代理 swift中代理的实现 定义swift中代理的协议 // swift 中的代理必须继承自NSObjectProtocol protocol VisitorViewDelegate : NSObjectPro…
实现下图效果,每点击一次cell的“加号”或者“减号”,就可以让“底部view”的总价进行对应的增加或者减少. 下图是实际运行效果图: 图(1) 因为“底部UIView”需要一直显示在底部.如果把底部UIView添加到tableView上会导致其跟随tableView的滚动而滚动,所以不能把底部UIView作为tableView的子控件.所以把底部UIView添加到控制器的view上,让底部的UIView和tableView同级.如下图2展示了视图层级结构: 图(1) 方案一:KVO实现: 控制…
一.通知 1.通知中心(NSNotificationCenter)每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向通知中心发布通知(NSNotification),描述自己在做什么.其他感兴趣的对象(Observer)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 2.通知(NSNotification)一个完整的通知一般包含3个属性:- (NSString *)name; // 通知…
1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. 切入点:真正的将通知应用到目标程序中的地点,一定是连接点.切入点是连接点的子集. 切入点决定了一个特定的类的特定方法是否满足一定的规则 引入:为类增加新的属性和方法. (引入通知) 目标对象:被通知的对象. 代理:把通知应用到目标对象以后,产生新的对象,该对象就称为代理对象. 织入:创建代理对象过程…
********HWDiscoverViewController.m(发现) - (void)viewDidLoad { [super viewDidLoad]; // 创建搜索框对象 HWSearchBar *searchBar = [HWSearchBar searchBar]; searchBar.width = ; searchBar.height = ; self.navigationItem.titleView = searchBar; //设置titleView 是搜索框 } HW…
委托代理: 委托代理(degegate)顾名思义,把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么.委托机制在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍. 那么在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子.譬如:在两个页面(UIView视 图对象)实现传值,用委托(delegate)可以很好做到. 代理设计模式1…
******* HMViewController.h #import "HMViewController.h" #import "HMTg.h" #import "HMTgCell.h" #import "HMTgFooterView.h" @interface HMViewController () <HMTgFooterViewDelegate> @property (nonatomic, strong) NS…