iOS Delegate NSNotificationCenter

简介: ----------------------------------------------------------------------------------Delegate---------------------------------...

----------------------------------------------------------------------------------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-------------------------------------------------------------------------------


目录
相关文章
|
调度 iOS开发
iOS中通知中心(NSNotificationCenter)的使用总结
iOS中通知中心(NSNotificationCenter)的使用总结
167 0
iOS中通知中心(NSNotificationCenter)的使用总结
Ios8之后, 定位的delegate不能触发的问题
Ios8之后, 定位的delegate不能触发的问题
112 0
|
存储 iOS开发 开发工具
【iOS 开发】UIApplicationDelegate 中两个值得注意的地方
01 - app 的第一个执行代码的机会是什么 新建工程的时候,Xcode 默认创建的 AppDelegate 文件里面会有 UIApplicationDelegate 的 6 个代理方法,其中第一个是 application:didFinishLau...
948 0
|
iOS开发 设计模式 Swift
iOS - Delegate 代理
1、Delegate 1.1 协议 协议:是多个类共享的一个方法列表。协议中列出的方法没有相应的实现,计划由其他人来实现。协议中列出的方法,有些是可以选择实现,有些是必须实现。 1>、如果你定义了自己的协议,那么不必由自己实现它。
1058 0