麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

通過KVO解除類之間的耦合

2019-11-14 18:41:09
字體:
來源:轉載
供稿:網友

一,概述

KVO,即:Key-Value Observing,它提供一種機制,當指定的對象的屬性被修改后,則對象就會接受到通知。簡單的說就是每次指定的被觀察的對象的屬性被修改后,KVO就會自動通知相應的觀察者了。

定義一個類A

@interface A : NSObject {
int age;
}
@end

 

2.定義此A為Controller的屬性,實例化它,監聽它的屬性,并顯示在當前的View里邊

- (void)viewDidLoad
{
[super viewDidLoad];

a = [[A alloc] init];
a.age = 5;
[a addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];

myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30 )];
myLabel.textColor = [UIColor redColor];
myLabel.text = [NSString StringWithFormat:@"%d",a.age];
[self.view addSubview:myLabel];

UIButton * b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b.frame = CGRectMake(0, 0, 100, 30);
[b addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:b];

}

3.當點擊button的時候,調用buttonAction方法,修改對象的屬性

-(void) buttonAction
{
a.age += 5;
}

4.實現回調方法

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"age"])
{
[NSString StringWithFormat:@"%d",a.age];
}
}

5.最后當頁面退出時需remove觀察者


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑人一区二区三区四区五区 | 亚洲国产成人一区二区 | 国产成人高潮免费观看精品 | 中文字幕欧美一区二区三区 | 午夜a狂野欧美一区二区 | 欧美 videos粗暴| 欧美成人精品不卡视频在线观看 | 久久久一区二区三区四区 | 牛牛碰在线视频 | 免费一级在线观看 | av电影院在线观看 | 欧美 国产 综合 | 久久亚洲国产午夜精品理论片 | 亚洲婷婷日日综合婷婷噜噜噜 | 中文字幕网在线 | 俄罗斯16一20sex牲色另类 | 欧美a∨一区二区三区久久黄 | 超碰99在线观看 | 高清做爰免费无遮网站挡 | 国产一区二区三区手机在线 | 色av综合在线 | 嗯~啊~弄嗯~啊h高潮视频 | 色猫av| 亚洲不卡 | 鲁丝一区二区三区不属 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 国产九色视频在线观看 | 亚洲网站在线观看视频 | av色在线观看 | 久久99精品久久久久久园产越南 | 黄色片免费看网站 | sesee99| 狠狠操操| 欧美黄色大片免费观看 | 国内久久久久 | 国产色视频一区 | 狠狠干视频网站 | av免费在线播放网址 | 欧美视频黄色 | 一区二区三区视频在线观看 | 久久国产一二区 |