@property와 @synthesize의 차이점은 무엇입니까?
-
03-07-2019 - |
문제
내가 이해했듯이 @synthesize는 실제로 게터와 세터를 생성하고 있습니다. 그러나 @property는 무엇을하고 있습니까? Cool @Synthesize Magic 기능의 매개 변수를 설정합니까?
해결책
헤더 파일에 @property를 씁니다
@property float value;
다음과 같습니다.
- (float)value;
- (void)setValue:(float)newValue;
다른 수업에 대한 정보를 얻습니다. 수업에는이 방법이 있습니다.
@synthesize phisicaly 클래스 구현에서 이러한 방법을 만듭니다
다른 팁
@property
이름을 속성으로 선언합니다. 즉, DOT 구문을 통해 액세스 할 수 있습니다.object.value
).
@synthetize
getter 및 setter 방법을 생성하는 매크로로 볼 수 있습니다. 입력하더라도 해당 메소드를 무시할 수 있다는 것을 아는 것이 유용합니다. @synthetize
제자리에.
@property
Getter 및/또는 Setter를 선언합니다
@synthesize
그들을 구현합니다.
@property 지시문으로 생성 된 세터와 게터를 구현하려면 @synthesize 지침이 필요하다는 일반적인 오해가 있지만 그렇지 않습니다. @synthesize없이 @property 지시문을 사용하면 여전히 세터/getters가 생성되며 DOT 표기법을 사용할 수 있습니다. 그러나 @synthesize 지시문을 제외하면 컴파일러가 선행 밑줄 문자로 해당 인스턴스 변수를 생성하게됩니다.
선행 밑줄을 사용하는 것은 속성과 인스턴스 변수를 구별 할 수있는 공통 규칙입니다. 속성 및 인스턴스 변수가 동일한 이름을 공유하는 것이 일반적입니다. @synthesize가 기본적으로하는 일입니다.