2014-01-23 7 views
4

내 프로젝트에서 coredata를 사용하고 있습니다. 엔티티의 하나는 newTotal라는 속성을 가지고 내가속성 이름이 new로 시작하면 응용 프로그램이 충돌합니다.

같은 오류가 표시됩니다 Xcode의 하위 클래스 NSObject의이 같은 속성을 추가 할 경우, 그 해당 NSManagedObject 클래스의 속성 선언은

@property (nonatomic, strong) NSString *newTotal; 

같다

error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects 

하지만 NSManaged 개체 하위 클래스에서 오류를 표시하지 않지만 속성에 액세스 할 때 응용 프로그램이 충돌합니다 (EXC_BAD_ACCESS).

XCode가 오류를 표시하지 않지만 응용 프로그램이 충돌하는 이유는 무엇입니까? 이것은 Xcode/clang/LLVM의 버그입니까?

나는 합성과 관련된 것을 알고있다. NSManagedObject 하위 클래스에서 속성을 합성하지 않지만 @dynamic 지시문은 getter 및 setter 메서드가 클래스 자체가 아닌 다른 곳 (수퍼 클래스 또는 런타임에 제공됨)에서 구현된다는 것을 컴파일러에 알립니다. 그러나 나는 그것에 대해 명확한 생각이 없습니다. 아무도 문제에 대해 명확한 생각을 줄 수 있습니까?

답변

5

내가 ARC를 사용하고있는 것을 볼 수 있습니다.

ARC 메모리는 사용자를 위해 관리되지만 사용자가 할 수있는 일/할 일이 거의 없습니다.

https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

당신이 접근에게 새로운로 시작하는 이름을 부여 할 수 없습니다 때문에 속성 "newXxxx을"이름을 수 없습니다.

//이 작동하지 않습니다 : // 작동

@property NSString *newTitle; 

차례이 다른 게터를 지정하지 않는 한, 예를 들어, 이름이 새로 시작하는 속성을 선언 할 수 없음을 의미합니다 :

@property (getter=theNewTitle) NSString *newTitle; 
+0

나는 것을 알고 있지만 왜 NSMAnageObject 서브 클래스에없는 – Johnykutty

+0

NSManagedObject 대부분 비표준 영구 속성에 사용되는 오류 만 응용 프로그램 충돌을 표시합니다. iOS에서 직접 지원하지 않는 객체 나 데이터 구조를 사용할 수 있습니다. 이 객체를 하위 클래스로 분류하면 원하는 데이터 구조를 사용할 수 없으므로 일반 메모리 검사를 건너 뛸 수 있습니다. – avuthless

+0

하지만 왜 그 오류가 표시되어야합니까? 당신은 당신이 이것을 할 수 없다는 것을 알고, 단지 그것을 피하십시오, 그리고 모든 것이 잘 될 것입니다. –

관련 문제