NSCoding에 대한 메소드를 실제 클래스에서 개별 파일로 분리하려고합니다. Objective-C에서 카테고리를 사용하여 일반적으로 새 메서드를 정의 할 수 있지만 마스터 클래스 파일에서 -encodeWithCoder : 및 -initWithCoder : 메서드를 발견하지 못하면 Xcode에서 경고를 보냅니다.objc 프로토콜 메소드를 메인 클래스에서 별도의 .m 파일로 구현 하시겠습니까?
내가 이것을하고있는 이유는 (그리고 잘하면 너무 복잡하게 들리지 않는다.) 나는 다양한 파일에 걸쳐 여러 클래스가 퍼져 있기 때문에 지루함과 중복을 피하기 위해 encodeWithCoder :/initWithCoder : 각각의 모든 클래스에 대한 메소드, 헤더 파일을 자동으로 구문 분석하고 변수 유형을 기반으로 필요한 인코딩/디코딩 코드를 생성하고 결과를 단일 Encoders.m에 덤핑하는 작은 스크립트를 작성했습니다. 결과 링크가 제대로되었지만 컴파일하는 동안 "클래스 'MyClass'의 불완전한 구현, '-initWithCoder :'에 대한 메서드 정의 : '찾을 수 없음'(등) 및"클래스 'MyClass' 'NSCoding'프로토콜 ". 나는 단순히 클래스의 .h 파일에 선언을 추가하려했지만 시도하지 않았다.
Xcode에 메소드가 실제로 구현되었는지, 카테고리가 아닌 클래스 파일에만 알릴 수있는 방법이 있습니까?
단순화 예 :
에서 MyClass.h
@interface MyClass : NSObject <NSCoding> {
int num; //@ENCODABLE
float timer; //@ENCODABLE
SomeOtherClass *obj; //@ENCODABLE
}
...
@end
MyClass.m
#import "MyClass.h"
@implementation MyClass
...
@end
Encoders.m
, 감사합니다! – ccjuju