我认为这应该很简单,但我很难找到有关此主题的信息。我已经创建了一个静态库,没有问题让基础工作。但是我很难弄清楚如何从静态库回复到主APP。
我希望我的静态库只使用一个标头作为前端,此标头应包含如下功能:
requestImage:(NSString *)path;
requestLikstOfSomething:(NSSting *)guid;
等等..
这些函数应该执行必要的工作并启动异步NSURLConnection,并在调用完成后回调主应用程序。你是如何做到这一点的,当异步方法完成时,从静态库回调的最佳方法是什么?我应该与代表(这是可能的),通知,键/值观察员这样做。我真的想知道你们是如何解决这个问题的,以及你认为最好的做法。
我将有20到25个不同的调用,所以我希望静态库头文件尽可能简单,最好只有20-25个函数的列表。
更新:
我的问题不是如何使用委托模式,但是女性方式最好是从静态库中进行回调。我想使用委托,但我不想在公共头文件中有20-25协议声明。我希望每个请求只有一个函数。
解决方案选择:
我在目标参数的帮助下从erkanyildiz中选择了解决方案,我知道它的技术非常低,但它对我来说是最干净的解决方案。我的目标是保持头文件尽可能小。感谢大家对他们的投入,当我有空的时候,我肯定会更加关注borrrdens解决方案。 user1055604解决方案与几个“标准”代表的回复也是我喜欢的。所以再次感谢大家的投入。
提前致谢。 最好的祝福 的Morten
答案 0 :(得分:0)
在这里查看代表的示例:How to perform Callbacks in Objective-C。
从callback
开始执行static library
并不重要。
静态库是一种编译/链接时间现象。因此,调用to
和from within
静态库在运行时对应用程序是透明的。
答案 1 :(得分:0)
委托模式是一种很好的方式。
您可以查看以下页面:
http://en.wikipedia.org/wiki/Delegation_pattern#Objective-C_example
作为另一种方法,您可以在每种方法中使用目标参数。
并安排对这些目标的回调,使用respondsToSelector
答案 2 :(得分:0)
如果您不希望静态库中的每个函数都有一个回调协议声明,那么首先查看每个回调将返回的内容,强行执行它作为回调。
从那里开始,找出它们之间的共同点,并将一个共同的元素绑定在一个类中,该类将作为响应的接口。你可能需要更多这样的课程。
例如,请查看NSURLResponse:
NSURLResponse为访问NSURLRequest实例返回的响应的对象声明编程接口。
NSURLResponse 以独立于协议和URL方案的方式封装与URL加载相关联的元数据。
NSURLConnection在didReceiveResponse
委托方法中使用此类。在更糟糕的情况下,您将最终得到一些回调而不是嘈杂的头文件。快乐的编码。 : - )
答案 3 :(得分:-1)
尝试使用Grand Central Dispatch进行功能调用。它非常简单,非常强大。以下是如何使用回调进行异步调用的示例:
此粘贴垃圾箱抱怨错误,但请注意该模式。它应该工作得很好。