Development Tip

XCode 6.3 경고 : 속성 합성

yourdevel 2020. 12. 2. 22:04
반응형

XCode 6.3 경고 : 속성 합성


새로운 Xcode 6.3에서는 다음과 같은 경고가 표시됩니다.

자동 속성 합성은 'homeInt'속성을 합성하지 않습니다. 슈퍼 클래스에 의해 구현되며 @dynamic을 사용하여 의도를 인식합니다.

어떻게 제거 할 수 있습니까?


이 속성 선언은 이미 부모 클래스에서 선언되었으므로 제거했습니다.


의도적으로 수퍼 클래스에서 동일한 속성을 재정의하는 경우 :

@implementation MyClass

@dynamic homeInt;

...

그렇지 않은 경우 속성의 이름을 바꿉니다.


@mplace의 의견에 따라, 필자의 경우 속성 유형을 속성의 원래 클래스의 하위 클래스로 구체화하기 위해 속성을 재정의했습니다. 그래서 @property 재정의가 필요했습니다.

내가 사용하는 것은 다음과 같습니다.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-property-synthesis"
// superclass type for currentValue was "id"
@property (nonatomic, strong) NSDate *currentValue;
#pragma clang diagnostic pop

"-Wno-objc-property-synthesis"가 아니라 "-Wobjc-property-synthesis"입니다.

참조 https://github.com/couchbase/couchbase-lite-ios/issues/660


의도적@dynamic <varName> 으로 수퍼 클래스의 속성을 재정의 한 각 장소를 추가하지 않으 려면 프로젝트 빌드 설정에서 "기타 경고 플래그"에 플래그를 추가 할 수 있습니다 . 이렇게하면 프로젝트 전체에서 경고가 표시되지 않습니다.-Wno-objc-property-synthesis


하위 클래스에 의한이 원인은 다음과 같은 상위 클래스에 대한 동일한 속성 이름 재정의를 정의합니다.
1) 하위 클래스 "AFHTTPSessionManager"는 다음을 정의합니다.

@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * **responseSerializer**;

2) 부모 클래스 "AFURLSessionManager"는 다음을 정의합니다.

@property (nonatomic, strong) id <AFURLResponseSerialization> **responseSerializer**;

3) 위로 경고가 온다! 제거하려면 충돌 속성 이름을 변경하십시오!
4) 또는 제안 된대로 구현 파일에 "@dynamic homeInt"를 추가하십시오.


Xcode 6.3으로 업데이트 한 경우 AFNetworking을 버전 2.5.2로 업데이트하면 이러한 경고가 사라집니다.


@implementation Myclass

@synthesize homeInt = _ homeInt; ...

@종료

참고 URL : https://stackoverflow.com/questions/29534654/xcode-6-3-warning-synthesize-property

반응형