Herança múltipla Objective-C

Eu tenho 2 classs, uma inclui methodA e a outra inclui methodB. Então, em uma nova class, eu preciso replace os methods methodA e methodB. Então, como eu alcanço a inheritance múltipla no objective C? Estou um pouco confuso com a syntax.

O Objective-C não suporta múltiplas inheritances, e você não precisa disso. Use composição:

@interface ClassA : NSObject { } -(void)methodA; @end @interface ClassB : NSObject { } -(void)methodB; @end @interface MyClass : NSObject { ClassA *a; ClassB *b; } -(id)initWithA:(ClassA *)anA b:(ClassB *)aB; -(void)methodA; -(void)methodB; @end 

Agora você só precisa invocar o método no ivar relevante. É mais código, mas simplesmente não há inheritance múltipla como um recurso de linguagem no objective-C.

É assim que eu codifico singletonPattern como “pai” Basicamente eu usei uma combinação de protocolo e categoria.

A única coisa que não posso adicionar é um novo “ivar” no entanto, eu posso empurrá-lo com o object associado.

 #import  @protocol BGSuperSingleton +(id) singleton1; +(instancetype)singleton; @end @interface NSObject (singleton)  @end static NSMutableDictionary * allTheSingletons; +(instancetype)singleton { return [self singleton1]; } +(id) singleton1 { NSString* className = NSStringFromClass([self class]); if (!allTheSingletons) { allTheSingletons = NSMutableDictionary.dictionary; } id result = allTheSingletons[className]; //PO(result); if (result==nil) { result = [[[self class] alloc]init]; allTheSingletons[className]=result; [result additionalInitialization]; } return result; } -(void) additionalInitialization { } 

Sempre que eu quero uma class para “herdar” este BGSuperSingleton eu apenas faço:

 #import "NSObject+singleton.h" 

e adicione @interface MyNewClass ()

Você sabe sobre protocolos, protocolos é o caminho para implementar a inheritance múltipla