#objective-c #interface #protocols
#objective-c #интерфейс #протоколы
Вопрос:
Я работаю над проблемой проектирования моего приложения для iOS, касающейся протоколов. Теперь я понимаю использование и когда требуется протокол, и я также понимаю, что они аналогичны интерфейсам в C # и Java.
Можете ли вы вызывать методы через сам протокол? Например, в C # я могу сделать следующее:
public interface IInterface
{
void SomeMethod();
void SomeOtherMethod();
}
public class AClass : IInterface
{
public void SomeMethod()
{
//Do something
}
public void SomeOtherMethod()
{
//Do something
}
}
public class Program
{
public void Main()
{
IInterface i = new AClass();
i.SomeMethod();
}
}
Возможно ли это в Objective-C или я пытаюсь внедрить подход в стиле .NET в iOS?
Ответ №1:
@protocol Protocol
- (void)someFunction;
@end
@interface A <Protocol>
@end
@implementation A
- (void) someFunction
{
....
}
@end
В каком-то другом месте
id<Protocol> a = [[A alloc] init];
[a someFunction];
[a release];
Комментарии:
1. Это абсолютно блестяще. Спасибо за быстрый ответ — я отмечу как правильный, как только StackOverflow позволит (видимо, мне придется подождать 5 минут)