Я пытаюсь отделить методы для NSCoding в отдельные файлы от моих реальных классов.Я знаю, что вы обычно можете определять новые методы, используя Категории в Objective-C, но кажется, что XCode все еще отправляет предупреждения, когда он не сталкивается с методами -encodeWithCoder: и -initWithCoder: в файле мастер-класса.
Причина, по которой я это делаю (и, надеюсь, это звучит не слишком запутанно), заключается в том, что у меня много десятков классов, разбросанных по разным файлам, и чтобы избежать утомительности и избыточности при записи метода encodeWithCoder: / initWithCoder:В каждом классе я собирал небольшой скрипт, который автоматически анализировал заголовочные файлы и генерировал необходимый код кодирования / декодирования на основе типов переменных и выводил результаты в один Encoders.m.Результат связывается должным образом, но я все еще получаю предупреждения во время компиляции «Неполная реализация класса« MyClass »», «Определение метода для -initWithCoder:« not found »(и т. Д.), А« Класс «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
#import "MyClass.h"
@implementation MyClass (Encoding)
-(void) encodeWithCoder:(NSCoder*)encoder {
// Auto-generated encoding of instance variables
}
-(id) initWithCoder:(NSCoder*)decoder {
if (self = [self init]) {
// Auto-generated decoding of instance-variables
}
return self;
}
@end