Если вы определили initWithRS232MsgRawEncoded
в классе, производном от RS232Msg
, вы не можете использовать этот селектор с RS232Msg*
.
Если я правильно понимаю, что вы пытаетесь сделать, вы хотели бы добавить еще одну возможность создания RS232Msg
объектов, инициализируя их необработанной кодировкой.
Вы можете сделать это по-разному. Один создает своего рода «фабричный» класс (это не было бы ортодоксальной фабрикой по шаблонам GoF, но это не имеет значения). Этот класс может иметь статическую функцию, которая является именно вашей initWithRS232MsgRawEncoded
.
Другой вариант - определить категорию для RS232
, а затем добавить в нее initWithRS232MsgRawEncoded
. Категории - это способ расширения классов без необходимости их подклассов. Это скелет того, как бы вы поступили в этом случае:
@interface RS232 (MyRS232Extension)
(id)initWithRS232MsgRawEncoded:....;
@end
@implementationRS232 (MyRS232Extension)
....
@end