第一:当然是如雷贯耳的delegate,这个没什么好说的,教程和文档说得够权威仔细了,它主要在"父子"实例中会常被用到;
第二:这种方式比较常见,但却未必会想到它其实也可以理解为是一种“回调”,这就是Target-Action模式;
第三:最任劳任怨的NSNotificationCenter,它以你最舒服的方式提供很令你满意的服务,它有三个关键词比较重要,observer、sender和name,observer就是notification的接受者,在"注册method"中会碰到它,经常是self,我也建议是这样,自己的notification就应该自己去注册,sender在设置"发送method"中(postNotificationname:object:和postNotificationname:object:userInfo:)的object参数时会见到,这个参数非常重要,它直接影响对NSNotificationCenter 使用的质量,sender是什么意思,就是notification的"签名",当在注册method中我们可以指定仅接受哪个sender的notification,那么center就是靠"发送method"时的object这个参数所传的"签名"来决定怎么发的,name比较简单,相当于标题,observer可以而且必须指定接受哪些name的notification,不同name其含义自然不同,在关系比较远的模块间,NSNotificationCenter很实用;
第四:KVO(Key-Value Observing),这个用得比较少,当B模块对A模块的属性状态感兴趣时,可以使用这种方法,参考文档:Key-Value Observing Quick Start;
第五:一个例子就明白了,它其实就是直接将一个对象的指针和方法作为参数传给另一个对像,让另一个对象来调用自己,就是这一句: UIImageWritetoSavedPhotosAlbum(originalimage,self,@selector(image:dIDFinishSavingWithError:contextInfo:),nil);
#pragma mark -
#pragma mark UIImagePickerController delegate
- (voID)imagePickerController:(UIImagePickerController *)picker dIDFinishPickingMediawithInfo:(NSDictionary *)Info {
UIImage *originalimage = [Info objectForKey:UIImagePickerControllerOriginalimage];
if(nil != originalimage)
{
UIImageWritetoSavedPhotosAlbum(originalimage,nil);
}
...
}
- (voID) image:(UIImage *)image dIDFinishSavingWithError:(NSError *)error contextInfo:(voID *)contextInfo {
...
}
以上就是我的一点小小的总结,这些方法在模块间的协作可能会经常使用到的,希望对开始学习cocoa的人们有点帮助吧。
转自:http://www.cnblogs.com/Win-Iphone_QG/archive/2011/02/16.html
大家应该都明白的是委托是协议的一种,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。
@H_301_100@通过上面那段话我们已经了解委托的基本原理,用大白话讲就是:你的老板想要做个项目,于是老板把任务交给了项目经理,可是项目经理却把写代码的事情让你去做了,这个过程其实就是 项目经理.delegate = 程序员,那么假如项目经理有了一个oCCoding()任务要程序员做,那么程序员这个类中就要实现oCCoding()这个方法。
我简单的总结了一下自己用到的委托的作用有两个,一个是传值,一个是传事件。 1.所谓传值经常用在b类要把自己的一个数据或者对象传给a类,让a类去展示或者处理。(切分紧耦合,和代码分块的时候经常用) 2.所谓传事件就是a类发生了什么事,把这件事告诉关注自己的人,也就是委托的对象,由委托的对象去考虑发生这个事件后应该做出什么反映。(这个经常见,例如在异步请求中,界面事件触发数据层改变等等) 3.利用委托赋值,这种方法感觉是为了不暴露自己的属性就可以给自己复值,而且这样更方便了类的管理,只有在你想要让别人给你赋值的时候才调用,这样的赋值更可控一些。(例如tableVIEw中的委托(dateSource)中常见)。最后,我想分享一下在使用委托的时候的一些心得和注意事项。 心得:delegate的命名要准确,尽量看名字就知道用法。delegate和通知有的用法有些象,但是前者是单对单的,后者是单对多的情况。 注意:在dealloc要把delegate至为nil,还有就是delegate设置属性的时候要用assign,不要用retain。 总结
以上是内存溢出为你收集整理的关于cocoa编程模块间协作的一点总结(delegate/T-A/notification/...)全部内容,希望文章能够帮你解决关于cocoa编程模块间协作的一点总结(delegate/T-A/notification/...)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)