Xcode 4.4 자동 @SynTheSize Xcode 4.3 프로젝트에서 실패
-
13-12-2019 - |
문제
그만큼 간단합니다.
라이온을 실행합니다.
- 방금 Xcode 4.4 로 업그레이드했습니다.
- 가장 최근의 Xcode 4.3 프로젝트 파일 로드
- 는 @synthesize 코드 라인 에 댓글을 달았습니다
- 및 오류가 많습니다.: ( )
검증 된 컴파일러는 'LLVM 4.0'으로 설정됩니다.
다음 나는 동일한 테스트를했지만 Xcode 4.4 내에서 새로운 프로젝트를 만들었고 Voila!자동 @Synthesize는 4.4 프로젝트 내에서 작동합니다.
자동 @SynThesize 은 코드에 추가 된 new 속성에서 작동하는 것으로 보입니다.그러나 기존 옛날은 오류를 생성합니다.
다른 누구도 이것을 경험합니까? 내가 확인해야 할 다른 어떤 것들을 확인해야합니까?
자동 생성 기능이 작동하기를 원합니다.
감사합니다.
해결책
오류는 속성을 선언하는 방법이 아니라 사용하는 방식으로 사용하지 않습니다.
자동 합성 속성 기본값으로 의
로 뒷받침이있는 백킹 저장소를 만듭니다.다음과 같이 선언 된 속성이있을 때 코드가 있습니다.
@property (nonatomic, strong) UILabel *sectorLabel;
.
및 자동 sythesize - 컴파일러가 자동으로 생성되는 것입니다 :
@synthesize sectorLabel = _sectorLabel;
.
이제 속성을 통해 액세스 할 수 있습니다.
self.sectorLabel;
.
또는 다음과 같이 백업 저장소에 직접 액세스 할 수 있습니다.
_sectorLabel;
. 다른 팁
해결되었습니다!
그래서 이것은 내가 한 일입니다.
ViewController.h
@interface ViewController : UIViewController
// Public:
@property (nonatomic, strong) UILabel *sectorLabel;
@end
.
ViewController.m
@implementation ViewController
//@synthesize sectorLabel;
.
이 오류가 발생했습니다.
ViewController.m : 48 : 2 : 명시되지 않은 식별자 'SectorLabel'사용;그랬다 '_sectorlabel'을 의미합니까?
코드를 변경 한 순간 :
self.sectorLabel
.
Xcode 4.3은 '자기'를 필요로하지 않고도 컴파일하고 잘 작동했습니다.예어.그러나 Xcode 4.4는 그것에 대해 더 엄격한 것으로 보인다.
답변을 받아들이는 문제는 셀프 .Property를 추가하여 코드의 동작을 변경했습니다.
IVAR 대 속성 대 액세스는 두 가지 다른 것들입니다.올바른 답변은 밑줄을 추가하여 IVAR을 올바르게 사용하도록 코드를 변경하는 것입니다.
이것은 Xcode의 기본 속성 합성을 변경하는 것에 대해 엄격하지 않습니다.또한 대부분의 스타일 가이드에서 Apple은 _ivar 이름을 낙담 시키므로 창문을 추측합니다.
내 코드에서 나는 자기를 사용합니다.내가 속성 getter 및 setter를 통해 액세스하려는 경우.이 동작에 대한 기존 코드를 변경하지 않으면 시간 낭비.