2015-01-06 2 views
5

이 같은 속성 내가 한 경우 : 구현 파일에서 재정의클래스 확장에서 재정의 된 속성의 메모리 관리를 변경할 수 있습니까?

//test.h 

@interface test 
@property (nonatomic, readonly, weak) NSObject x; 
@end 

는 읽기/쓰기 수 : 나는 .H 약한 사용

// test.m 
@interface test() 
@property (nonatomic, readwrite) NSObject x; 
@end 

을하지만, 확장에 아무 말도하지 속성은 '약한'지정자를 유지합니까, 아니면 '강'으로 변경됩니까?

속성이 재정의 될 때 strong/assign/weak 키워드를 덮어 씁니까?

+0

일반적으로 클래스 확장에서 속성의 'strong/weak/assign' 속성을 지정합니다. 읽기 전용 공개 선언에는 필요하지 않습니다. – rmaddy

+0

@rmaddy -'.h'에서'readonly'을 선언하고'.m'에서 클래스 확장의'readwrite, weak'를 선언하면 Xcode 5.1에서 "클래스 속성의 재 선언이 약한 동안 기본 속성 선언이 내재적으로 강합니다"라고 표시됩니다. .1. 그러나 확장자에'strong' 또는'assign'을 포함한다고해서 컴파일러의 불만이 높아지는 것은 아닙니다. 나중에 컴파일러가 이것을 변경 했습니까? – CRD

+0

@CRD 음. 나는 '약한'속성으로 그 일을하지 않았다고 생각합니다. 알아 둘만한. – rmaddy

답변

5

Xcode 5.1.1을 사용한 간단한 테스트는 weak 속성이 유지되는 것을 보여줍니다. assignstrong 속성에 대해서도 마찬가지입니다. .m에 포함 시키려면 .m에있는 내용을 .h에 지정하고 .m에서 생략 할 수 있습니다.

그런데, 나는 이것이 어디에서 문서화되어 있는지 모른다. 그러나 Objective-C의 의미는 정식으로 정의되지 않는다. 따라서 당신의 책임하에 사용하십시오.

권장 사항 : 그냥 반복하십시오.

+0

속성이 설정되어 있는지 확인하는 방법은 무엇입니까? 나는 이런 것들을 확인하는 방법을 찾고있다. 감사! – Wingzero

+0

컴파일 할 때'.h'; 런타임에서 문서의'property_getAttributes' 함수를 조회합니다. – CRD

관련 문제