KVO
3425 단어 VO
// StockModel.h
// KVO
//
// Created by on 15/7/20.
// Copyright (c) 2015 . All rights reserved.
//
#import <Foundation/Foundation.h>
@interface StockModel : NSObject
@property (nonatomic,strong)NSString * stockName;
@property (nonatomic,strong)NSString * price;
/*.....*/
@end
// StockModel.m
// KVO
//
// Created by on 15/7/20.
// Copyright (c) 2015 . All rights reserved.
//
#import "StockModel.h"
@implementation StockModel
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
NSLog(@"UndefinedKey:%@",key);
}
@end
// ViewController.h
// KVO
//
// Created by on 15/7/20.
// Copyright (c) 2015 . All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
//
// ViewController.m
// KVO
//
// Created by on 15/7/20.
// Copyright (c) 2015 . All rights reserved.
//
#import "ViewController.h"
#import "StockModel.h"
@interface ViewController ()
{
StockModel *_model;
UILabel *_label;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// , setValuesForKeysWithDictionary
_model=[StockModel new];
NSDictionary *dic=[NSDictionary dictionaryWithObjects:@[@"A ",@"10.0"] forKeys:@[@"stockName",@"price"]];
[_model setValuesForKeysWithDictionary:dic];
//_model.price=@"22";
/*
1、observer-
2、keyPath- key,
3、options-
4、context- context
*/
[_model addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
//label
_label=[[UILabel alloc]initWithFrame:CGRectMake(10, 70, 300, 300)];
_label.text=[_model valueForKey:@"price"];
_label.textAlignment=NSTextAlignmentCenter;
_label.backgroundColor=[UIColor redColor];
[self.view addSubview:_label];
_label.font=[UIFont systemFontOfSize:50];
UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(10, 380, 300, 60)];
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
[btn setBackgroundColor:[UIColor greenColor]];
[btn setTitle:@" " forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:btn];
}
//change-
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([keyPath isEqualToString:@"price"]) {
_label.text=[_model valueForKey:@"price"];
NSLog(@"%@",change);
}
}
-(void)btnClick{
NSLog(@" ");
[_model setValue:@"20.0" forKey:@"price"];
_model.price=@"12";
//_label.text=@"123";
}
-(void)dealloc{
[_model removeObserver:self forKeyPath:@"price"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[TIL] 2월 19일아침 학습 - 이코테 그래프 탐색 알고리즘 DFS/BFS → 인덱스 0은 사용하지 않고, 1번 부터 8번까지의 노드가 있으니 하나 더 큰 크기로 9개 크기의 배열을 생성 Value Object 어제 호눅스 수업과 아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.