iOS 면접문제 KVO KVC MVC

2619 단어
KVC와 KVO 1, KVC: NSKeyValueCoding 키 값 인코딩: 문자열로 대상 속성에 간접적으로 접근하는 메커니즘입니다.키는 대상의 어떤 값을 정하는 문자열, 즉 속성의 이름입니다. 보통 시스템 액세서리 방법과 이름이 같고 소문자로 시작합니다.속성 값을 얻으려면valueForKey 방법을 사용하고, 속성 값을 설정하려면setValue:forKey 방법을 사용합니다.또한 KVC는 정의되지 않은 속성 값에valueForUndefinedKey: 방법을 정의했습니다. 원하는 것을 다시 불러올 수 있습니다.예: 사전 변환 모델(swift 버전)에서 Person 클래스 만들기
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를 관리하는 중요한 구성 요소로 보기의 표시 숨김 등 속성을 관리하고 에이전트 방법을 실현하며 상호작용 이벤트를 감청한다.
.

좋은 웹페이지 즐겨찾기