【问题标题】:Is there a way to implement Objective C protocol dynamically有没有办法动态实现Objective C协议
【发布时间】:2014-12-07 19:57:50
【问题描述】:

我想使用一个通用协议,它的方法被调用来传递结果,但是有不同的方法来处理不同的结果。 详细来说,我有一个名为 ClassA 的类,它有两个方法 MethodA 和 MethodB, 我想从 MethodA 设置协议 A,从 MethodB 设置协议 B。 我的问题是动态定义这些协议。意思是,我只想在methodA中定义protocolA,在MethodB中定义protocolB。

有没有办法做到这一点?

【问题讨论】:

  • 可能有一种方法可以做你想做的事,但还不清楚那是什么。您能否添加一个更具体的示例来帮助您解释?
  • Josh:我只是想在同一个类中处理不同的url连接结果。

标签: objective-c delegates protocols


【解决方案1】:

使用委托的唯一方法是在类的标头中定义一个协议并相应地使用这些协议。您不能“立即创建协议”。

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

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

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

3) 使用积木。块是一种非常有用的代码传递方式,可以像objective-c对象一样对待(注意:它们不是)。您的响应类(即您将委托什么)定义一个块并将其传递给 ClassA,然后 ClassA 在适当的时间调用该块。在处理动画等时,块通常用作完成处理程序

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2011-03-17
    • 2017-03-19
    • 2011-03-17
    相关资源
    最近更新 更多