인스턴스 메서드 age
은 캡슐화입니다. 서브 클래스가 메서드를 오버라이드 (override) 해, 필요에 따라서 다른 구현을 제공 할 수 있습니다. 예를 들어, 서브 클래스는 초기 날짜와 현재 날짜를 저장하는 대신에 나이를 계산할 수 있습니다. 인스턴스 변수를 사용하는 경우 하위 클래스에는 age
을 재정의 할 수있는 옵션이 없습니다. 인스턴스 메소드를 추가하면 하위 클래스가 새 구현을 제공 할 수 있습니다.
age
에 글을 쓸 수 없다는 또 다른 장점은 클래스 사용자가 age
을 얻을 수 있지만 set
수 없습니다.
인스턴스 변수 "age"에 대한 getter 및 setter가 @synthetize
으로 생성되지 않습니까?
@synthesize
에는 클래스에서 누락 된 속성 선언이 필요합니다. 속성은 언어에 비교적 익숙하지 않아 사용자가 찾은 코드에서 사용되지 않는 이유를 설명 할 수 있습니다.
같은 일이 재산 대신의 바르 및 접근을 선언되어 일을하고, 전부 @synthesize
을 건너 뛰는의 현재 방법 :
이
@property (nonatomic, readonly) int age;
당신은 할당하여 클래스 내부에서 age
에 기록 할 수 있습니다 _age
, 뒷받침 변수가 자동으로 생성됩니다. 사용자는 [obj age]
또는 obj.age
구문을 사용하여 값을 읽을 수 있습니다.
"__With getter and setter 인스턴스 변수"age "는 @synthetize를 사용하여 만들 수 있습니까? __"게시 된 코드는 속성을 사용하지 않습니다. 이 코드에는'@ property' 나'@ synthesize'가 없습니다. – rmaddy