2012-03-23 69 views
2

我认为这应该很简单,但即时通讯难以找到有关此主题的信息。我做了一个静态库,并没有问题的基础知识工作。但即时通讯很难找出如何从静态库回调主APP。我希望我的静态库只使用一个头部作为前部,这个头部应该包含如下功能:
requestImage:(NSString *)path;
requestLikstOfSomething:(NSSting *)guid;
等等。从静态库回调

这些函数应该做必要的工作并启动一个异步NSURLConnection,并在调用完成后回调主应用程序。你们如何做到这一点,当异步方法完成时,从静态库回调的最佳方式是什么?我应该这样做与代表(这是可能的),通知,键/值观察员。我真的很想知道你们是如何解决这个问题的,以及你认为最佳做法。

我将有20-25个不同的调用,所以我希望静态库头文件尽可能简单,最好只与20-25函数的列表。

更新:
我的问题不是如何使用委托模式,但女巫的方式是最好从静态图书馆做回调。我想使用委托,但我不想在公共头文件中有20-25协议声明。我希望每个请求只有一个函数。

解决方案choosen:
我选择从erkanyildiz与目标参数的帮助下,解决方案,我知道它的相当低技术含量,但对我来说是最干净的解决方案。我的目标是保持头文件尽可能小。感谢大家对它们的意见,当我得到时间时,我肯定会看到更多的大型中央调度解决方案。 user1055604解决方案与一些“标准”代表的答复也是我喜欢的。所以再次感谢大家的意见。

在此先感谢。 致以问候 Morten

回答

0

委托模式是一个很好的方法。

您可以检查这些网页:

http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18

http://en.wikipedia.org/wiki/Delegation_pattern#Objective-C_example

作为另一种方法,你可以在每一个你有方法使用目标参数。 和进度回调在这些目标上,检查是否正在使用respondsToSelector

+0

嗨。我宁愿这样做与代表团,但我的理解,然后我将不得不将协议声明在.h文件中,并与20-25不同的回调它将是一个非常满溢的头文件。我宁愿不要在静态库头文件中有协议声明。我错了吗?目标,选择器解决方案似乎很容易实现,只有问题我能想到的是静态库的用户必须给选择正确的准则或只是实现我定义的函数。 – MortenHN 2012-03-23 08:03:07

+0

你为什么犹豫有20-25协议的方法。如果你需要他们,你需要他们。 – erkanyildiz 2012-03-23 09:15:34

+0

我明白了你的观点,但是我希望为希望分发它的客户制作这个库,所以我的目标是尽可能简单地在头文件中使用尽可能小的noice。但如果这是不可能的,我将被迫在头文件中使用协议。 – MortenHN 2012-03-23 10:07:57

0

尝试使用Grand Central Dispatch进行函数调用。这很简单,而且非常强大。下面是如何使一个异步调用与回调的示例:

http://pastebin.com/xDUKm6wh

本贴斌抱怨错误,但注意的格局。它应该工作得很好。

0

这里以代表为例:How to perform Callbacks in Objective-C

callbackstatic library内执行应该没关系。

静态库是一种编译/链接时间现象。因此,调用tofrom within静态库在运行时对应用程序是透明的。

+0

嗨。我宁愿这样做与代表团,但我的理解,然后我将不得不将协议声明在.h文件中,并与20-25不同的回调它将是一个非常满溢的头文件。我宁愿不要在静态库头文件中有协议声明。我错了吗? – MortenHN 2012-03-23 07:55:03

0

如果你宁可不要在你的静态库中的每个功能一个回调协议声明回应你的回调,开始观察每个回调将返回如果你强行将它作为回调来实现。

从那里开始,找到它们之间的共同之处,并将共同的元素绑定在一起,作为响应的接口。你可能需要更多这样的课程。

作为例子,看NSURLResponse


NSURLResponse声明编程接口为访问由的NSURLRequest实例返回的响应的对象。

NSURLResponse 以独立于协议和URL方案的方式封装与URL加载相关联的元数据

这个类被NSURLConnection用在它的didReceiveResponse委托方法中。在最糟糕的情况下,您将最终得到几个回调,而不是嘈杂的头文件。快乐的编码。 :-)

+1

好吧,我看到你说什么,我可以切下20-25协议,让我们说两个响应协议一个NSData和一个让我们说UIImage。这绝对是。感谢您的意见。 – MortenHN 2012-03-23 12:10:55

+0

这是回答您的问题吗? – user1055604 2012-03-23 13:04:03