인터페이스에서 중괄호 사이, 중괄호 @property
외부 또는 둘 다를 통해 인스턴스 변수를 공식적으로 선언 할 수 있습니다 . 어느 쪽이든 클래스의 속성이됩니다. 차이점은을 선언 @property
하면 @synthesize
getter / setter를 자동으로 코딩하는 using을 구현할 수 있다는 것입니다. 예를 들어 자동 코더 설정 기는 정수를 초기화하고 0으로 부동합니다. 당신이 인스턴스 변수를 선언하고 해당를 지정하지 않으면 @property
, 당신은 사용할 수 없습니다 @synthesize
하고 있어야 자신의 게터 / 세터 물품.
고유 한 항목을 지정하여 언제든지 자동 코딩 된 getter / setter를 재정의 할 수 있습니다. 이것은 일반적으로 managedObjectContext
느리게로드 된 속성 으로 수행됩니다 . 따라서 managedObjectContext
속성으로 선언 한 다음 -(NSManagedObjectContext *)managedObjectContext
메서드 도 작성합니다 . 인스턴스 변수 / 프로퍼티와 이름이 같은 메소드는 "getter"메소드입니다.
@property
선언 방법은 당신에게 같은 다른 옵션을 허용 retain
하고 readonly
인스턴스 변수 선언 방법은하지 않습니다. 기본적으로 ivar
는 오래된 방식이며 @property
확장하여 더 멋지고 / 쉽게 만듭니다. 자신을 사용하여 참조 할 수 있습니다. 접두사 여부에 관계없이 이름이 해당 클래스에 고유 한 한 중요하지 않습니다. 그렇지 않고, 당신의 슈퍼 클래스가 당신과 같은 속성의 이름을 가지고 있다면, 당신이 말하는 이름을 지정하기 위해 self.name 또는 super.name처럼 말해야합니다.
따라서 ivar
중괄호 사이에 s를 선언하는 사람이 점점 줄어들고 대신을 지정 @property
하고 @synthesize
. 당신은 할 수 없어 @synthesize
대응하지 않고 구현 @property
. 신디사이저는 @property
사양 에있는 속성 유형 만 알고 있습니다. synthesize 문을 사용하면 속성의 이름을 바꿀 수 있으므로 코드 내에서 하나의 이름 (축약 형)으로 속성을 참조 할 수 있지만 .h 파일 외부에서는 전체 이름을 사용할 수 있습니다. 그러나 XCode가 현재 가지고있는 정말 멋진 자동 완성 기능을 사용하면 이점은 적지 만 여전히 존재합니다.
이것이 주변에 떠 다니는 모든 혼란과 잘못된 정보를 해결하는 데 도움이되기를 바랍니다.