Я считаю, что это невозможно в Swift, потому что это невозможно в Objective- C.
Если у вас есть класс A
в вашем фреймворке, который не является частью вашего заголовка зонтика, и вы хотите B
, чтобы создать подкласс и быть в заголовке вашего зонта, вы не можете этого сделать.
Вы должны объявить наследование в объявлении интерфейса @interface B: A
, которое идет в заголовке B и, следовательно, в заголовке зонтика. Но компилятор будет жаловаться: «Что такое A?» Вы можете импортировать туда заголовок A, но в отличие от Swift import
, Objective- C s #import
буквально переносит содержимое заголовка A в заголовок B. Это означает, что A теперь тоже находится в заголовке зонтика, т.е. publi c.
Смешивание Swift с Objective- C не magi c. Компилятор по-прежнему должен иметь возможность создавать допустимый заголовок Objective- C, который точно описывает интерфейс Swift. Так что, если вы не придумаете, как заставить Objective- C делать это, вы не сможете сделать это в Swift. отношение "имеет", т.е.
@objc public class NewSwiftClass {
let parent: ExistingObjectiveCClass
}
очевидно, что вы теряете большую часть преимуществ фактического наследования, но у вас все равно будет родитель вместо super
. Вы также можете объявить протокол publi c, которому соответствуют оба класса, чтобы обеспечить согласованность их методов.