国产探花免费观看_亚洲丰满少妇自慰呻吟_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的賦值 實現

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高雄市| 家居| 龙海市| 贵州省| 天祝| 理塘县| 柘荣县| 洛南县| 聂拉木县| 沐川县| 白银市| 德州市| 三河市| 湖南省| 栾城县| 交城县| 当雄县| 玉门市| 彭阳县| 靖宇县| 克什克腾旗| 墨江| 丹棱县| 凤翔县| 卢湾区| 炉霍县| 泽州县| 邵武市| 昆山市| 阜阳市| 广东省| 荥经县| 黎平县| 犍为县| 建瓯市| 英德市| 天祝| 怀柔区| 嵊泗县| 黄石市| 新源县|