클래스 속성이 원자 성인 경우 iOS에서 구현의 getter 및 setter를 사용자 정의 할 수없는 이유는 무엇입니까?
@property (atomic, strong) NSArray* myArray;
실제로 원자 속성에 대한 사용자 지정 getter 및 setter를 구현할 수 있습니다. 그러나 컴파일러가 허용하지 않는 것은 이러한 두 접근 자 메서드 중 하나만 사용자 지정 변환을 구현하고 다른 하나는 구현하지 않고 컴파일러가이를 합성 할 것으로 기대하는 것입니다. 그리고 이것은 의미가 있습니다. 원자 속성의 전체 개념은 속성이 업데이트되는 동시에 속성에 액세스 할 수 없다는 것입니다. 따라서 컴파일러는 접근 자 메서드의 원자 적 특성을 사용자의 것과 조정할 방법이 없기 때문에 다른 하나를 합성하지 않고는 이러한 원자 접근 자 메서드 중 하나를 합성 할 수 없습니다.
말할 필요도없이 atomic
속성에 대해 고유 한 접근 자 메서드 쌍을 구현하는 경우 원자 적 동작의 구현을 보장 할 책임이 있음을 인식해야합니다.
나는 토론을 볼 때 걱정 것을,하지만 고백해야 atomic
유사한 무언가와 함께 NSArray
. atomic
키워드를 사용하면 스레드 안전성이 보장 된다는 가정하에 작동하지 않는지 확인하고 싶습니다 . 일반적으로 배열과 같은 객체를 다룰 때 NSArray
포인터 검색뿐만 아니라 스레드 안전성을 달성하기 위해 일부 동기화 메커니즘 내에서 해당 객체와의 모든 상호 작용을 래핑해야합니다 . 따라서이 동기화 메커니즘은 일반적으로 기본 접근 자 방법보다 높은 수준으로 구현됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다