Я почти уверен, что это невозможно, но мне интересно, есть ли у кого-то более знающего об Objective-C другая идея. Причина, по которой я сомневаюсь, что это сработает, заключается в том, что, хотя это возможно при страшном хакерстве во время выполнения, я сомневаюсь, что компилятор сможет понять.
Меня интересует, возможно ли иметь протокол, который взаимозаменяем с другим:
// let <ShortName> be a synonym for <NSReallyReallyLongName>
id <ShortName> obj = [NSSomething objectConformingtoReallyReallyLongProtocolName];
По сути, я хотел бы обобщить мой API, чтобы он брал объекты, которые соответствуют <NSReallyReallyLongName>
, но я бы хотел, чтобы и я, и потребители моего API не приходилось так много печатать. Одним из возможных решений является typedef
:
typedef id <NSReallyReallyLongName> ShortName;
Но для потребителей API становится менее понятно, что я устанавливаю ограничение на основе протокола. Есть идеи?
Обновление:
Я чувствую себя немного глупо, увидев действительно простое решение в ответах ниже. Спасибо за юмор.