有没有办法动态实现Objective C协议

时间:2014-12-07 09:48:36

标签: objective-c delegates protocols

我想使用一个通用协议来调用其方法来提供结果,但是有一种不同的方法可以处理不同的结果。 在详细信息中,我有一个名为 ClassA 的类,它有两个方法 MethodA和MethodB , 我想从MethodA设置protocolA,从MethodB设置protocolB。 我的问题是动态定义这些协议。这意味着,我只想在methodA中定义protocolA,在MethodB中定义protocolB。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

使用委托,唯一的方法是在类的标头中定义协议并相应地使用这些协议。你无法“创造出蹄子的协议”。

在你的问题中,你说你想从MethodA做一件事,从MethodB做另一件事,那么有几种方法你可以解决这个问题:

1)在ClassA中定义两个协议方法,从MethodA调用一个,从MethodB调用另一个。然后您的代理可以实现这两个协议并做出相应的反应。 (这可能是最好的方法)。

2)在ClassA中定义一个协议方法,并从每个方法传递不同的参数。这是常见的做法,例如tableView委托,表视图通过self,以便委托可以区分多个表。

3)使用块。块是传递代码的一种非常有用的方法,可以像objective-c对象一样对待(注意:它们不是)。您的响应类(即您将委托的内容)定义一个块并将其传递给ClassA,ClassA然后在适当的时间调用该块。在处理动画e.t.c

时,块通常用作完成处理程序

但是,您无法在方法中定义协议。