2014-02-15 6 views
2

현재 Xcode (v5.0.2)의 최신 버전을 사용하고 있으며 내 앱에는 iOS 7.0의 배포 대상이 있습니다. 구현 파일에iOS 7 Dev - @synthesize ivars를 자동 생성하지 않습니다.

@property (strong, nonatomic) NSString *firstName;, 나는 그것이 잘

예를 합성 할 수

내 문제는 어떤 클래스에 상관없이, 내가

이 전 헤더의 속성을 설정할 수 있다는 것입니다 : @synthesize firstName;

내 문제는 코드에서 _firstName을 사용할 수 없다는 것입니다. 필자는 다른 프로젝트에서 자동 ivars를 사용했습니다 (밑줄이있는 속성 이름).

Xcode는 밑줄없이 속성 이름으로 변경하라고 알려주며 불만을 제기합니다. 왜이 프로젝트가 자동으로 밑줄이있는 ivars를 만들지 않는지 이해할 수 없습니다. 이전 버전의 Objective-C에서는이 작업을 스스로해야하지만 iOS 7에서는 작동하지 않는다는 것을 알고 있습니다.

감사합니다!

답변

5

@synthesize을 건너 뛸 수 있으며, 밑줄이 그어진 ivars가 생성됩니다. 변수 이름 (@synthesize firstName = _firstName;)을 지정하지 않고 @synthesize을 지정하면 밑줄없이 변수가 작성됩니다.

+0

질문에 답한 경우 체크 표시를 클릭하여 답변을 수락하십시오. –

2

@synthesize을 생략하면 문제가되지 않습니다. 새로운 XCode 버전을 사용하기 때문에이 경우에는 실제로 필요하지 않습니다. similar question (및 this one)을 살펴보십시오.

2

@synthesize를 사용하지 마십시오 (NSManagedObject 서브 클래스가 아니면). 하지만 어쨌든 직접 ivar를 사용해야하는 것은 드뭅니다. init 메소드 밖에서는 항상 self.firstName을 사용해야합니다.otherName이 라인에 바르 이름

동안

+0

"init, dealloc 및 getter/setter 메서드 외부"라고 말하고 싶습니다. – occulus

3

@synthesizefirstName이 속성 이름이 라인

@synthsize firstName = otherName;

에서 귀하의 재산

에 대한 바르를 만들

=== @synthesize firstName = firstName;

@synthesize firstName; 그래서 속성과 바르 당신이 어떤 @synthesize

를 작성하지 않은 경우 firstName

다음 컴파일러는

을 넣어 것 인 동일 @synthesize firstName = _firstName;

firstName은 속성 이름이고 _firstName은 ivar 이름입니다