iOS 之單例 代理 通知
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
[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"];
}
/******************通知******************/