Tanto quanto sei, o Objective-C não suporta sobrecarga de método. Qual pode ser a alternativa para isso no Objective-C? Ou devo sempre usar um nome de método diferente?
ios
objective-c
overloading
suse
fonte
fonte
Vale ressaltar que, mesmo que o Objective-C não suporte sobrecarga de método , o Clang + LLVM suporta sobrecarga de função para C. Embora não seja exatamente o que você está procurando, pode ser útil em algumas situações (por exemplo, quando implementação de uma versão ligeiramente hackeada (contrária ao encapsulamento) do padrão de design do visitante )
Aqui está um exemplo simples de como funciona a sobrecarga de funções:
fonte
id
eisKindOfClass:
à disposição, porém, é uma história diferente ...id
e abordoisKindOfClass:
os cenários mais práticos. Um dos motivos pelos quais você pode preferir sobrecarregar é a seleção automática do tipo mais específico atendido, o que acarretaria uma pequena sobrecarga a ser mantida com a verificação explícita de tipos.David está correto, pois o método de sobrecarga não é suportado no Objective-C. É semelhante ao PHP nesse sentido. Como ele também aponta, é prática comum definir dois ou mais métodos com assinaturas diferentes, da maneira que ele exemplifica. No entanto, também é possível criar um método usando o tipo "id". Através do tipo "id", você pode enviar qualquer objeto (e quaisquer primitivas usando a classe NSNumber) para o método e, a partir do próprio método, pode testar seu tipo e lançar a exceção apropriada, se necessário. Embora isso tenha um impacto menor no desempenho, provavelmente será nominal ou insignificante, a menos que você esteja processando grandes quantidades de dados.
Este também é um belo local para implementar um protocolo para aplicar o tipo de objeto, o que pode ser feito da seguinte maneira:
fonte