iOS Delegate NSNotificationCenter

----------------------------------------------------------------------------------Delegate----------------------------------------------------------------------------------------

1:声明代理

@protocol UICustomHTMLEditorDelegate <NSObject>
- (void)getHTMLContent:(NSString *)content; //声明代理中需要实现的方法
@end

2:封装代理

@property (assign,nonatomic)  id<UICustomHTMLEditorDelegate> delegate;

3:类实现中 实例化代理

@synthesize delegate;

4:判断代理中是否实现了指定的方法 实现返回 true 没实现返回false

[self.delegate respondsToSelector:@selector(getHTMLContent:)]

5:指定代理的接管者,那么代理要求的实现方法接管者必须实现,不然会出现警告

customerHTMLEditor.delegate = self;

6:在声明代理所需要实现的方法前 加  @optional表示该方法可选.接管者不实现也没有关系.

7:在声明代理所需要实现的方法前 加  @required(默认)表示该方法必需实现,接管者如果不实现,XCode编辑器将会提出警告.如下图所示:

8:使用Delegate进行开发时要注意如下两点

1:如果你是编写静态库給別人用时,记得把你的delegate設成(assign)  property,這樣才不會造成内容泄漏,空指针引用
2:当你是要始用別人的library,記得在你自己dealloc的時候,把delegate設成nil,以避免crash的事情發生。

3:但是很興奮的是到了iOS5中的Automatic Reference Counting這個問題可以有所改善。
在ARC中提出了一個新的weak reference的概念來取代原本的assign,
weak reference指到的物件若是已經因retain count歸零而dealloc了,則此weak reference也自動設成nil。
而原本舊的這種assign的作法,在ARC中叫做__unsafe_unretained,這只是為了相容iOS4以下的版本。

iOS Delegate 你必须要知道的事情

本博文很形象的解释了Delegate 开发模式原理:

http://blog.csdn.net/volcan1987/article/details/6668683

----------------------------------------------------------------------------------Delegate----------------------------------------------------------------------------------------

-------------------------------------------------------------------------NSNotificationCenter-------------------------------------------------------------------------------

1:通知中心注册消息

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(FE_backRootViewController) name:FE_NOTI_BACK_ROOTVIEWCONTROLLER object:nil];

2:通知中心触发消息

[[NSNotificationCenter defaultCenter] postNotificationName:FE_NOTI_BACK_ROOTVIEWCONTROLLER object:self userInfo:nil];

3:删除消息

[[NSNotificationCenter defaultCenter] removeObserver:self];

-------------------------------------------------------------------------NSNotificationCenter-------------------------------------------------------------------------------

时间: 2024-08-31 15:40:36

iOS Delegate NSNotificationCenter的相关文章

iOS - Delegate 代理

1.Delegate 1.1 协议 协议:是多个类共享的一个方法列表.协议中列出的方法没有相应的实现,计划由其他人来实现.协议中列出的方法,有些是可以选择实现,有些是必须实现. 1>.如果你定义了自己的协议,那么不必由自己实现它.但是,这就告诉其他程序员,如果要采用这项协议,则必须实现这些方法.这些方法可以从超类继承. 协议不引用任何类,它是无类的. 分类也可以采用一项协议. 2>.定义一个协议很简单:只要使用 @protocol 指令,后面跟上你给出的协议名称.定义一项协议时,可以扩展现有协

jQuery中delegate()方法的用法详解_jquery

delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数.下面我们具体来了解一下. 语法结构: 代码如下: $(selector).delegate(childofselector,type,data,function) 参数说明: childSelector 必需.规定要附加事件处理程序的一个或多个子元素. event 必需.规定附加到元素的一个或多个事件. 由空格分隔多个事件值.必须是有效的事件. data 可选.规定传递到函

Objective-C中类和方法的定义以及协议的使用_IOS

类和方法的定义一般类都是继承NSObject,新建一个类时父类选择NSObject即可,oc只有单继承,没有多继承. 下面以一个简单的oc工程来讲解(需配置好Xcode工具以相应的SDK),会建工程的请直接跳到'六'步骤. 一.新建一个oc编译环境,打开xcode->File->New->Project(快捷键 command+shift+N). 二.选择OS X--Application--Command Line Tool,选择next 三.填写项目名称(最好英文),你自己的名字,和

iOS开发:delegate、notification、KVO的选择

  delegate.notification和KVO的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation; 2.通知中心Notification Center; 3.键值观察key value observing,KVO 因此,那为什么我们需要这些模式以及什么时候用它以及什么时候不用它. 下面完全根据

IOS中通知中心(NSNotificationCenter)的使用总结

IOS中通知中心NSNotificationCenter应用总结 一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readonly, copy) NSString *name; 这个成员变量定义一个对象,可以理解为针对某一个对象的消息. @property (readonly, retain) id object; 这个成员变量是一个字典,可以用其来进行传值

《Swift iOS应用开发实战》——3.3关于Application Delegate

3.3关于Application Delegate 到目前为止,我们终于编写了一个像点儿模样(至少可以完成某种简单功能)的App.它看起来是不是很酷呢?请不要激动,在保持充分淡定的同时,让我们花费一点时间来了解下源代码中的一个文件-AppDelegate.swift,这个文件实现了"应用程序委托".在Cocoa Touch中,使用委托(Delegate)的频率往往大于我们每天上厕所的频率(除了闹肚子的时候).简单来说,它就是在对象中,让另外一个对象负责完成某件任务,并且将完成的状态和需

xcode反汇编调试iOS模拟器程序(四)自动断点应用之NSNotificationCenter

知道怎么查看后,先看看有什么实际应用,拿NSNotificationCenter来做实践吧. 首先在某个容易进入的地方加断点,并停在那,例如main函数.在gdb或lldb输入命令,手工添加断点.如下图: 输入的命令如下: b -[NSNotificationCenter addObserver:selector:name:object:] b -[NSNotificationCenter addObserverForName:object:queue:usingBlock:] 然后contin

delegate 代理-IOS代理协议方法是如何被调用的?

问题描述 IOS代理协议方法是如何被调用的? 这几天一直在思考代理的工作原理.代理可以获得事件或数据信息.调用与此信息相关的方法.把信息传给该方法,实现对事件或数据信息的回应. 这里我最大的疑惑是,代理如何把事件与方法对应起来?例如:A对象定义了一组代理协议,B对象作为A的代理,实现了所有的协议方法,当某个事件发生时,A的代理如何知道应该调用哪个协议方法?是根据方法名吗?我怀疑是因为所有代理都继承自NSObject协议,这一组协议可能使代理具有了神奇的功能. 另一个令我疑惑的事情是,自定义代理与

ios开发之SWIFT中delegate工作笔记

delegate Cocoa 开发中接口-委托 (protocol-delegate) 模式是一种常用的设计模式,它贯穿于整个 Cocoa 框架中,为代码之间的关系清理和解耦合做出了不可磨灭的贡献. 在 ARC 中,对于一般的 delegate,我们会在声明中将其指定为 weak,在这个 delegate 实际的对象被释放的时候,会被重置回 nil.这可以保证即使 delegate 已经不存在时,我们也不会由于访问到已被回收的内存而导致崩溃.ARC 的这个特性杜绝了 Cocoa 开发中一种非常常