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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

通過(guò)KVO解除類之間的耦合

2019-11-14 18:41:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一,概述

KVO,即:Key-Value Observing,它提供一種機(jī)制,當(dāng)指定的對(duì)象的屬性被修改后,則對(duì)象就會(huì)接受到通知。簡(jiǎn)單的說(shuō)就是每次指定的被觀察的對(duì)象的屬性被修改后,KVO就會(huì)自動(dòng)通知相應(yīng)的觀察者了。

定義一個(gè)類A

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

 

2.定義此A為Controller的屬性,實(shí)例化它,監(jiān)聽(tīng)它的屬性,并顯示在當(dāng)前的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.當(dāng)點(diǎn)擊button的時(shí)候,調(diào)用buttonAction方法,修改對(duì)象的屬性

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

4.實(shí)現(xiàn)回調(diào)方法

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

5.最后當(dāng)頁(yè)面退出時(shí)需remove觀察者


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 简阳市| 华容县| 冕宁县| 南城县| 盐亭县| 濮阳市| 河北省| 长寿区| 左云县| 峡江县| 增城市| 科尔| 西乌珠穆沁旗| 韩城市| 开鲁县| 密山市| 于田县| 汝城县| 富阳市| 丰原市| 郸城县| 外汇| 华阴市| 乌拉特前旗| 肥乡县| 靖西县| 清镇市| 大兴区| 左权县| 乐清市| 聊城市| 韩城市| 古丈县| 搜索| 常山县| 苏尼特左旗| 辉南县| 南充市| 敖汉旗| 河西区| 固安县|