1、代理模式
delegate的作用:
当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,委托模式就可以派上用场。说到底一切都是为了使类之间的耦合性更松散。好的代码应该对扩展开放,对修改关闭。
自定义一个delegate:
@protocol DelegateTestDelegate《Object》
@optional则是可做或不做
@required 就是必须去办的
-(void)test;
@end
@interface DelegateTest : NSObject
{
id《DelegateTestDelegate》 delegate;
}
@property (nonatomic,assign) id《DelegateTestDelegate》 delegate;
-(void)testMethod;
@end
-(void)testMethod:(id )sender
{
if ([self.delegate respondsToSelector:@selector(test)])
{
[self.delegate test];
}
}
关于delegate protocol 网上有一个例子讲的非常形象:
我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户
(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。
即:我.delegate = 助手;
于是以后每当我遇到需要测试程序或者接电话的活,我就把他转交给助手(delegate)去处理,助手处理完后如果有处理结果(返回值)助手会告诉我,也许我会拿来用。如果不需要或者没有结果,我就接着做下面的事。
http://blog.csdn.net/huifeidexin_1/article/details/7567731
(二)观察者模式
1、通知:
有些同学可能会发现,在某个ViewController中,没有移除通知好像也没有发生过crash。是的,这是因为在viewController被销毁的时候,它帮我们调用了remove方法。想去证明的同学可以新建一个分类,覆盖系统的removeObserver方法,会发现在controller销毁的时候调用了我们重写的remove方法。
本地通知注意:
在使用通知之前必须注册通知类型,如果用户不允许应用程序发送通知,则以后就无法发送通知,除非用户手动到iOS设置中打开通知。
本地通知是有操作系统统一调度的,只有在应用退出到后台或者关闭才能收到通知。(注意:这一点对于后面的推送通知也是完全适用的。 )
通知的声音是由iOS系统播放的,格式必须是Linear PCM、MA4(IMA/ADPCM)、μLaw、aLaw中的一种,并且播放时间必须在30s内,否则将被系统声音替换,同时自定义声音文件必须放到main boundle中。
本地通知的数量是有限制的,最近的本地通知最多只能有64个,超过这个数量将被系统忽略。
如果想要移除本地通知可以调用UIApplication的cancelLocalNotification:或cancelAllLocalNotifications移除指定通知或所有通知。
http://www.cnblogs.com/QianChia/p/5771055.html#autoid-0-0-0
单例模式:
http://www.cnblogs.com/jierism/p/6119460.html
http://www.cocoachina.com/ios/20160613/16661.html