iOS 면접문제 KVO KVC MVC
class Person: NSObject {
var name:String?
// , KVC key crash. ,
var age:Int = 0
var gender:String?
//
init(dict:[String:AnyObject]) {
super.init()
setValuesForKeysWithDictionary(dict)
}
수치:
let person = Person(dict: dict)
print(person.name)
print(person.age)
print(person.gender)
2, KVO: NSKeyValueObserving 키 값 감청: 대상의 속성 값이 변할 때 알림을 받을 수 있는 메커니즘을 정의했습니다.똑같이 들기:view 만들기
@property (nonatomic, strong) UIView *myView;
설정view
self.myView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
self.myView.backgroundColor = [UIColor cyanColor];
// button, myView
UIButton *btn = [UIButton buttonWithType:(UIButtonTypeSystem)];
[btn setTitle:@" " forState:(UIControlStateNormal)];
btn.frame = CGRectMake(150, 400, 100, 100);
btn.backgroundColor = [UIColor redColor];
[btn addTarget:self action:@selector(btnAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:btn];
[self.view addSubview:self.myView];
클릭 방법 구현
- (void)btnAction
{
//
// :
[self.myView addObserver:self forKeyPath:@"backgroundColor" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
self.myView.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.f];
}
관찰자 방법
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
self.view.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.f];
// ( dealloc )
[self.myView removeObserver:self forKeyPath:@"backgroundColor"];
}
이렇게 하면 button을 누르면 myView의 배경색을 바꿀 때self.view의 배경색도 변경됩니다.
MVC: 모델-View-Controller: iOS 개발 중의 디자인 모델로 모델은 주로 모델 데이터를 관리하고view는 UI의 중요한 컨트롤러이다.view의 디스플레이 내용은 모델이 결정하고 어떻게 표시하는지는 controller가 결정한다.controller는 UI를 관리하는 중요한 구성 요소로 보기의 표시 숨김 등 속성을 관리하고 에이전트 방법을 실현하며 상호작용 이벤트를 감청한다.
.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.