У меня есть этот метод, который должен задать имя объекта, но объекты могут быть из 3-х классов A, B и C.Это правильный способ запуска универсального метода?
Если я просто сделать это
[object setName: @"new name"]; //at this point I am treating object as of type id
Xcode будет жаловаться, что Есть несколько методы, названные «setName», затем я делаю это
if ([object isKindOfClass:[ClassA class]]) {
[(ClassA *)object setName:newName];
} else
if ([object isKindOfClass:[ClassB class]]) {
[(ClassB *)object setName:newName];
} else
[(ClassC *)object setName:newName];
}
Но это кажется мне хромым.
Я пытался обмануть Xcode, используя что-то вроде этого
[(typeof(object))object setName:newName];
Но Xcode не нравится это тоже, наверное, потому, что typeof(object)
возвращается id
, и мы вернулись на круги своя. Такая же ошибка.
Что лучше/изящным способом я должен это сделать?
Какой тип 'object' объявлен? – mipadi
-------------> id – SpaceDog
Существуют ли несколько методов с именем 'setName'? Нам нужно понять, почему вы получаете эту первоначальную ошибку? –