iOS 之单例 代理 通知
来源:互联网 发布:商务中国域名转出 编辑:程序博客网 时间:2024/06/15 12:06
/******************单例******************/
1> Singleton.h 声明方法
//共享单例,便于其他类访问
+ (instancetype)sharedSingleton;
2> Singleton.m 实现方法
/**
1.重写allocWithZone创建一个静态变量用于dispatch_once实例化
2.写+sharedXXX方便调用
*/
+ (id)allocWithZone:(struct_NSZone *)zone
{
staticSingleton *singleton =nil;
staticdispatch_once_t onceToken;
//dispatch_once 保证只会被执行一次
dispatch_once(&onceToken, ^{
singleton = [superallocWithZone:zone];
});
return singleton;
}
+ (instancetype)sharedSingleton
{
return [[selfalloc]init];
}
3> 创建方法
Singleton *single1 = [SingletonsharedSingleton];
Singleton *single2 = [SingletonsharedSingleton];
Singleton *single3 = [[Singletonalloc]init];
//输出同样的地址,保证只被创建一次
NSLog(@"single1=%p single2=%p single3=%p ",single1,single2,single3);
/******************单例******************/
/******************代理******************/
用于消息传递,传值等。
.h类中
// 声明一个协议
@protocol MJAppViewDelegate <NSObject>
@optional
- (void)appViewClickedDownloadButton:(MJAppView *)appView;
/**
* 代理
*/
@property (nonatomic,weak) id<MJAppViewDelegate> delegate;
.m类中
if ([self.delegaterespondsToSelector:@selector(appViewClickedDownloadButton:)]) {
[self.delegateappViewClickedDownloadButton:self];
}
/******************代理******************/
/******************通知******************/
1.发送通知
[[NSNotificationCenterdefaultCenter]postNotificationName:@"notice"object:selfuserInfo:@{@"infoName":@"我是发送者"}];
2.在所要接收的控制器里面
1>注册通知
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(noticeActin:)name:@"notice"object:nil];
- (void)noticeActin:(NSNotification *)notice
{
//输出:我是发送者
NSLog(@"%@",notice.userInfo[@"infoName"]);
}
2>移除通知
- (void)dealloc
{
[[NSNotificationCenterdefaultCenter]removeObserver:@"notice"];
}
/******************通知******************/
- iOS 之单例 代理 通知
- iOS 通知,代理,单例,block传值
- [单例、代理 & 通知]
- iOS开发之属性、单例、代理、通知传值比较
- iOS 页面间几种传值方式(属性,代理,block,单例,通知
- 02-单例-通知-KVO-Block-代理
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- IOS中5种传值方式详解(属性、Block代码块、代理、单例、通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 传值方法(属性传值、代理传值、Block、通知、单例)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- iOS 页面间几种传值方式(属性,代理,block,单例,通知)
- 【jzoj3870】【单词检索】【后缀数组】
- JavaScript中常用的20种正则校验(值得收藏)
- 复习线段树
- 如何做到 jQuery-free?
- 记一次 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock’(2) 排错流程
- iOS 之单例 代理 通知
- Android 5.0、6.0的那(xin)些(kong)事(jian)
- openwrt单独编译package包
- APT Hash sum mismatch错误的常见解决方法总结
- redis消息模式
- Android ListView性能提升小技巧
- list 排序问题
- Android ListView优化思路12则
- 根据字符串中出现的字符逐个打印各字符出现次数