一、我再把这个通知的发布与监听给大家复习一下,
1.我们发布和监听通知,
1)第一,需要一个对象,通知的发布者
2)第二,需要一个对象,通知的监听者
只有它俩,还不够,一个是通知的发布者、一个是通知的监听者,
只有它俩,根本不够,
你要想进行通知的发布、和监听,必须得借助一个
3)NSNotificationCenter,
必须得借助这个对象,才能发布、和监听通知,
如果仅仅是有这两个对象(通知的发布者、通知的监听者)
根本无法实现,
所以说,通知的发布和接收,必须至少得有这三个对象,
1)一个是发布者
2)一个是监听者
3)一个是用来发布、和监听的这么一个工具
OK,有了它以后,一定要是先监听、后发布
先监听、再发布,
这样的话,当它只要一发布的时候,你这个监听的方法,就会被执行,
这是不是就类似于一个事件,
这就类似于一个事件的模型,
当你一怎么怎么样的时候,某个方法立刻被执行,
其实,这就是一个事件,
2.然后,刚才,我们监听的时候,
1)第一个参数:是哪个对象,来监听,
2)第二个参数:是这个对象的哪个方法,来监听,
3)第三个参数:是监听的通知的名称,
4)第四个参数:是监听的哪个对象,发的通知,
然后下面这个发布的时候,
1)第一个参数:发布的通知名称
2)第二个参数:发布的通知对象,是sender1,要发布通知,
让这个NSNotificationCenter,这个对象,帮它来发布吧,
最终发布通知的对象,是sender1,
3)第三个参数:具体的通知的内容
这是通知的具体内容,
好,然后,我再给大家介绍这么几点,
如果说,通知的名称,你没有写,
写了一个nil,
表示,所有的通知,你都会监听,
对,nil,就是空,
如果说,通知的名称,你监听的时候,没有告诉我,你要监听的是哪个通知,
注意:如果没有指定参数3(或者指定参数3为nil)
那么,表示凡是sender1对象发布的所有的通知,m1方法都会监听的到。
也就是说,如果你通知名称这儿,不给我指定名称,
你指定一个nil,
没有给我指定名称,这样的话,
这样的话,只要是这个sender1,这个对象,发布的所有的通知,不论通知名称叫什么,那么这个m1方法,都会被监听的到,
好,那么这是这个,
3.如果说,如果没有指定参数3(或者指定参数3为nil),但是指定了参数4,
为sender1,这里加一个但是吧,
那么表示sender1的所有的通知,它都会被监听到,
4.这是第一个注意点,那么再注意:
如果指定了参数3(指定要监听某个通知),但是没有指定参数4(参数4为nil),那么表示,无论是哪个对象发布的参数3这个通知名称,参数3是不是指定的一个通知的名称,就是说,无论是哪个对象发布的与给定的通知名称,相同的通知,都会被监听得到。
如果,你要是这里指定了一个名称,
我们刚才叫什么来着,@“tzname1”,吧,
但是呢,这里指定一个nil,