1. 程式人生 > >iOS 之單例 代理 通知

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

:@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"];

}

/******************通知******************/