国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS之單例,代理,通知,KVO,Block全能解析

2019-11-14 18:32:44
字體:
來源:轉載
供稿:網友
//單例//.h+ (Instannce *)shareInstance;//.mstatic Instannce *instance = nil;@implementation Instannce//定義一個創建單例對象的方法+ (Instannce *)shareInstance {    if (instance == nil) {        instance = [[Instannce alloc] init];    }       return instance;}//使用alloc的時候調用的方法instancetype+ (id)allocWithZone:(struct _NSZone *)zone {    if (instance == nil) {        instance = [super allocWithZone:zone];    }      return instance;}- (id)copy {    return self;}- (id)retain {    return self;}- (NSUInteger)retainCount {    //返回無符號最大值    return UINT_MAX;}- (oneway void)release {    //什么也不做}//代理//.h@PRotocol GetMessageProtocol <NSObject >- (void)getNum:(NSString *)num withPassWord:(NSString *)pass;@end@property (nonatomic,assign) id<GetMessageProtocol> delegate;//.mif ([self.delegate respondsToSelector:@selector(getNum:withPassWord:)]) {        [self.delegate getNum:num.text withPassWord:passWord.text];    }#pragma mark - GetMessageProtocol- (void)getNum:(NSString *)num withPassWord:(NSString *)pass {    }registerCtrl.delegate = self;//通知 注意postNotificationName 必須一致    [[NSNotificationCenter defaultCenter] postNotificationName:NotificationName object:self userInfo:dic];  //dic存放在userinfo中   dic中存放要傳過去的值是個字典//接受通知    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeAction:) name:NotificationName object:nil];//KVO監聽/*KVO觀察者方法 keyPath: 監聽的屬性名 object: 被觀察的對象 change: 屬性值 context: 上下設備文 */    [registerCtrl addObserver:self forKeyPath:@"屬性名稱1" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];    [registerCtrl addObserver:self forKeyPath:@"屬性名稱2" options:NSKeyValueObservingOptionNew context:nil];//觸發的事件- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {    //object的值是registerCtrl    if ([keyPath isEqualToString:@"屬性名稱1"]) {           }else if ([keyPath isEqualToString:@"屬性名稱2"]) {            }  }//.h@property (nonatomic, copy) NSString *屬性名稱1;@property (nonatomic, copy) NSString *屬性名稱2;//.m   必須通過setter方法改變值或者KVC//KVO方式//觸發的事件[indexCollectionView addObserver:self forKeyPath:@"屬性名稱" options:NSKeyValueObservingOptionNew context:nil];        [posterCollectionView addObserver:self forKeyPath:@"pathIndex" options:NSKeyValueObservingOptionNew context:nil];- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {    //得到改變后的新值    NSInteger index = [[change objectForKey:@"new"] integerValue];    }}//Block  block的返回值  block的名稱    block的參數    typedef void(^SucccessBlock)(NSString *); //Block的定義@property(nonatomic,copy)SucccessBlock loginBlock;  //block的聲明  要用copy防止block的循環引用_freindBlcok(friends); block的調用[[MyXMPPManager shareManager] getFreind:^(NSArray *freinds) {}   //block的賦值 實現

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖口县| 北流市| 徐闻县| 大埔区| 武城县| 望都县| 井研县| 汕头市| 五莲县| 申扎县| 浮梁县| 黔南| 渝中区| 华容县| 河北省| 长岭县| 晋江市| 顺昌县| 泰州市| 肥东县| 张北县| 梁河县| 台前县| 罗平县| 温州市| 芦山县| 宁武县| 鹤峰县| 潮安县| 哈尔滨市| 乐业县| 北流市| 惠水县| 浠水县| 政和县| 炉霍县| 邮箱| 霍林郭勒市| 安丘市| 马龙县| 长葛市|