Вызов метода Objective-C iOS через протоколы

#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 минут)