1
iOS 문서에서 KVC 준수를 읽을 때. 나는 수업을 시험하려고 노력했다. KVC 클래스는 준수합니까?KVC 준수 클래스
는하지만 몇 가지 질문이 있습니다 속성 "이름", "나이"에 대한
아니 세터를하고, 클래스는 여전히 오류 없이 KVC를 사용하고도 예외는
- 해고되지 않습니다 속성을위한 세터가 생성되지 않으면 컴파일러는 무엇을합니까? 그것은 setter와 getter 쌍을 생성합니까? 10 : 나이 :
Person.h
는@interface Person : NSObject { NSString *name; NSInteger age; }
Person.m
@implementation Person - (id)init { self = [super init]; if (self) { name = @"Duc Nguyen"; age = 10; } return self; }
ViewController.m
- (IBAction)showKeyKVC:(id)sender { //--test kvc name1.text = [person valueForKey:@"name"]; age1.text = [NSString stringWithFormat:@"%@", [person valueForKey:@"age"]]; }
나는 결과가 버튼을 누르면 이름 : Duc Nguyen. 이 경우 클래스가 KVC를 어떻게 사용할 수 있는지 이해할 수 없습니까?
이런 이유로 모든 사용자 지정 클래스에 대해 'NO'를 반환하려면 '+ accessInstanceVariablesDirectly'를 재정의하는 것이 좋습니다. KVC가 인스턴스 변수에 직접 액세스하는 방식은 캡슐화의 끔찍한 위반이며 오류를 숨 깁니다. –