최근에 오래된 Xcode 프로젝트를 컴파일하려고 시도했지만 (잘 컴파일하는 데 사용됨) 이제이 형식의 오류가 많이 발생합니다.
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
이러한 오류를 일으키는 코드 패턴은 항상 다음과 같습니다.
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
오류가 생성되는 이유를 알 수 있습니다. 컴파일러에 내 속성 접근 자 (getter 및 setter)를 합성하도록 지시 한 후 즉시 setter를 수동으로 재정의합니다. 그 코드는 항상 약간 냄새가났다.
그렇다면 이것을 수행하는 올바른 방법은 무엇입니까? @dynamic
대신에 사용 @synthesize
하면 getter도 작성해야합니다. 그게 유일한 방법인가요?
atomic
속성 에서만 발생합니까 ? 원자 속성의 경우 잠금 전략과 관련하여 게터 / 세터 쌍을 동기화 상태로 유지하는 것이 좋습니다. 한 부분은 합성되고 다른 부분은 사용자 정의 코드 인 경우 어렵습니다.