2017-10-17 10 views
0

나는 헤더 파일 만이 @implementation이 아니기 때문에 _ivars만을 포함하는 Objective-C 헤더 파일에서 C 구조체를 정의하고 싶습니다. 그게 가능한가? 내가 좋아하는 사용자를 확장하고 더 많은 데이터 멤버를 추가 할 수 있도록이 @interface 정의 싶습니다@interface 속성은 @implementation 만 필요합니까?

(이 간단한 설명 정의이기 때문에 나는 또한 @implementation을 추가 헤더 파일 includers을 강요하고 싶지 않아요) 그렇게 할 수 있습니다 (다시 _ivars 만). 그러나, 당신이 뭔가를 생각하면 다른 제안이 효과가있을 수 있습니다.

+0

구조체 또는 클래스를 정의 하시겠습니까 ? – Willeke

+0

@Willeke 다른 사람들이 원하는 경우 범주를 확장 할 수 있도록 클래스가되고 싶습니다. – sramij

+0

[구조체를 C로 확장 할 수 있습니까?] (https://stackoverflow.com/questions/7370533/can-i-extend-a-struct-in-c) – Willeke

답변

2

예는합니다 (@property 선언을 백업 스토리지를 포함하여 런타임에 실현 될 수있는 클래스를 야기 할 수있는 컴파일러에 의해 컴파일 된 클래스에 선언 된 @implementation이 있어야한다.

일단 컴파일, 클래스는 할 수 없습니다 추가로 @properties이 자동으로 백업됩니다 (카테고리를 통해 확장 할 수 있지만 저장 용량 및 카테고리의 범주 확장은 일반적으로 권장되지 않습니다).

+0

감사합니다. 무언가 그리고 전적으로 C-struct 스타일이지만 "인터페이스"에 싸이면 "구현"하지 않고도 여전히 할 수있을 것입니다. (덧붙여서, 카테고리로 확장해도 괜찮습니다) – sramij

+0

하위 클래스에 속성을 추가 할 수 있습니다. – Willeke

+0

@Willeke 클래스 (일명 인터페이스)를 사용할 때의 문제점은 구현을 추가해야한다는 것입니다. 헤더 파일 만 가질 계획이므로이를 피하려고합니다. – sramij