2014-03-24 1 views
9

읽기 ProgrammingWithObjectiveC, 내가 말할 수 있습니다 : 그것은 기본이기 때문에속성에서 '강한'속성을 생략/제거 할 때 경고가 표시됩니까?

은 명시 적으로 강한 속성을 지정할 필요가 없습니다.

이 같은 내 프로젝트의 속성에 대한 '강력한'속성, 그것이 나에게 경고를 제공

@property (nonatomic) NSString *string; 

생략하면 :

없음 '할당', '유지'를 또는 'copy'속성이 지정되었습니다. - '할당'이 가정됩니다.

아카.

-Wobjc 재산권 노 속성

그래서 어떻게 든 컴파일러는 달리이 난 인터뷰 경고 수, 미안 여전히 설명서를 참조 카운팅을하고 있다고 생각하고있는 것 같다.

빈 프로젝트를 새로 만들 때 '강한'속성이 없으면 경고 메시지를 표시하지 않으므로 현재 프로젝트 설정과 관련이 있어야합니다. UI를 통해 도달 할 수 있습니다. 이 프로젝트는 다소 오래된 것 (~ 2 년)이며 그동안 여러 마이그레이션 단계 (XCode 3> 4> 5, 비 ARC> ARC 등)를 거쳤습니다.

저는 프로젝트 설정에서 어디든지 보았습니다. 그러나 어딘가에 체크 표시가없는 것 같습니다.

누구나 동일한 문제가 발생합니까?

+0

이 문제는 발생하지 않았지만 빌드 로그에 경고 식별자 '-Wsomething'이 있어야합니다. 아마도 그것은 단서를 제공합니다. 경고를 알면'-Wno-something' 컴파일러로 명시 적으로 해제 할 수 있습니다. –

+1

경고를 비활성화하고 싶지 않습니다. 컴파일러의 문제점을 알고 싶습니다. :) – stk

+1

나는 그것을 이해한다 (그리고 나는 그것이 어디에서 비롯되는지 모른다). 내 생각은 경고의 "이름"이 힌트를 줄 수도 있다는 것입니다. 빌드 로그에서 찾았습니까? –

답변

1

최신 버전의 Xcode를 사용하고 있는지 확인하십시오. 이것은 새로운 컴파일러 기능이며 최근 업데이트에서 어떻게 작동하는지 여러 번 변경되었습니다.

프로젝트가 gcc가 아닌 clang/llvm을 사용하도록 구성되었는지 확인하십시오. gcc가 ARC를 전혀 지원하지 않는다는 것을 기억하지 못합니다. (누군가가 알 수 있다고 언급 할 수 있습니까?)하지만 모든 기능을 지원하지는 않습니다. 그리고 오래된 Xcode 프로젝트는 당신이 그것을 변경하지 않으면 gcc를 사용할 것입니다. 최근 언어 변경 사항은 모두 clang/llvm에서만 구현됩니다.

ARC를 사용하고 있습니까? ARC는 프로젝트 전체 또는 특정 파일에 대해 활성화 또는 비활성화 할 수 있으므로주의해야 할 행동이 변경됩니다.

Xcode의 일부 변경 사항은 새 프로젝트에만 적용되며 이전 프로젝트는 해당 프로젝트를 사용하지 않도록 설정되어 있습니다. 기본값으로 설정되지 않은 ARC 관련 설정을 살펴보십시오.

+0

Xcode 4.3 이전에 @property에 대한 기본값이 weak/assign이었습니다 (정확히 기억이 안납니다). 동작은 Xcode 4.3에서 로컬 변수와 동일하게 변경되었습니다 (기본값은 항상 __strong입니다). – LombaX

+0

"Xcode의 일부 변경 사항은 새 프로젝트에만 적용되며 이전 프로젝트는 설정을 사용하지 않도록 구성되었습니다. 기본값으로 설정되지 않은 ARC로 전송할 수 있습니다. " <이 구성 설정을 정확하게 찾고 있습니다. 새 프로젝트에는 적용되지만 이전 된 마이그레이션에는 적용되지 않습니다. 예 : Xcode 5.1을 실행 중입니다. LLVM을 사용하고 ARC는 프로젝트 전반에 적용되며 ARC와 관련된 모든 것은 기본값으로 설정됩니다 (예 : 굵은 글꼴은 표시되지 않음). – stk

+0

@sdk 그냥'Target -> Build Phases -> Compile Sources'를 체크하여 파일에'-fno-objc-arc'가 없는지 확인 했습니까? –

3

그냥 검색했는데 가장 가까운 빌드 속성은 CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES이고 어떤 관계가 있는지 의심 스럽습니다.

빌드 설정보기에서 "모두"및 "레벨"옵션을 선택하여 타겟이 무시하는 기본 매개 변수를 확인할 수 있습니다. 아니 기본적 만이 대상이 예로 전환되고 있다는 경고를

enter image description here

확인합니다.

+0

+1 수준의 옵션 – stk

+0

...하지만 다시 : 경고를 끄고 싶지 않습니다. 프로젝트 파일을 수정하고 싶습니다. – stk

+0

오류라고 생각하면 "수정"해야합니다. Xcode는 기본적으로'strong'을 생략하는 것은 에러가 아니라고 생각합니다. (플래그를 활성화시킴으로써) 에러라고 생각한다면, 간단히'strong'을 추가하여 수정할 수 있습니다. 그렇지 않으면 플래그를 지우고 더 이상 오류라고 생각하지 않으므로 수정할 사항이 없습니다. – Rivera